tidev / titanium-sdk

🚀 Native iOS and Android Apps with JavaScript
https://titaniumsdk.com/
Other
2.76k stars 1.21k forks source link

iOS 18 set tab's badge #14145

Open gmasiero opened 19 hours ago

gmasiero commented 19 hours ago

I have searched and made sure there are no existing issues for the issue I am filing

Description

On SDK 12.5.1.GA and iOS 18 / iPadOS 18, if you set the badge value of a Tab, it works only the fist time.

Expected Behavior

The tab must always show the correct badge (for example: tab.badge = '7' --> the badge must show '7', also if it's not the first time i've set it)

Actual behavior

The tab badge is updated only the first time

Reproducible sample

// create a tabGroup and a tab called "myTab"
var window = Ti.UI.createWindow({
    title: 'My Tab'
});
var myTab = Ti.UI.createTab({
    window: window,
    title: 'My Tab',
    icon: 'myicon.png'
});

// add myTab to the tabGroup
tabGroup.addTab(myTab);

// change tab's badge value
myTab.badge = '5';
myTab.badge = '7';  // tab badge remains '5'

// ATTENTION: I've found this workaround: if you modify (for example) the title of the tab, it works (the tab is refreshed?):

myTab.badge = '5';
myTab.badge = '7';  
var tmp = myTab.title;
myTab.title = tmp + ' ';
myTab.title = tmp;  // now the tab is refreshed and the badge shows '7'

Steps to reproduce

Create an app with a Tab Group. In a tab, set the badge value more than one time. See the reproducible sample.

Platform

iOS

SDK version you are using

12.5.1.GA

Alloy version you are using

No response

m1ga commented 15 hours ago

Hi, I've tested

var win1 = Ti.UI.createWindow();

var tab1 = Ti.UI.createTab({
    window: win1,
        icon: '/assets/images/tab1.png'
}),
tabGroup = Ti.UI.createTabGroup({
    tabs: [tab1]
});

tab1.badge = 1;
tab1.badge = 2;
tab1.badge = 3;

tabGroup.open();

and it does show 3 for me. iOS 17 and 18.1 simulator. Android is working fine too