/ / UITabbar без контролера - iphone, uitabbar, selecteditem, uitabbaritem, touch

UITabbar без контролера - iphone, uitabbar, selecteditem, uitabbaritem, touches

У мене є проста програма, де єдиний контролер перегляду має розетку до UITabBar. Він також реалізує UITabBarDelegate і встановлюється як делегат для UITabBar:

@interface TheMainViewController : UIViewController <UITabBarDelegate>
{
IBOutlet UITabBar *theTabBar;
}

Я реалізував наступний метод, який викликається, коли кожен з моїх 4 UITabBarItems прослуховується. Я спробував зробити щось дійсно просте:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
tabBar.selectedItem = [tabBar.items objectAtIndex:0];
return;
}

Теоретично, він завжди повинен залишатися обраним на моємуПерша вкладка, і вона чудово працює, коли я просто натискаю будь-який UITabBarItem (нічого не відбувається, перша завжди залишається вибраною). Але коли я торкаюся UITabBarItem і тримаю його (не знімаючи пальця), вибір все одно змінюється! Налагодження, все називається належним чином.

Це ніби зміна властивості selectedItem не має жодного ефекту, якщо у користувача все ще є пункт "вниз" (пальцем по ньому).

Що було б вдалим способом? Я спробував перевантажити UITabBar і возитися з штрихамиBegan і touchchesEnd, але вони навіть не називаються. Те саме з UITabBarItem.

О, і, будь ласка, не пропонуйте використовувати UITabBarController, оскільки він недостатньо гнучкий для мого застосування.

Так засмучує .... дякую!

Відповіді:

2 для відповіді № 1

Здається, це так - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item телефонує, коли користувач бере пальцем, а не перед цим.

Я знаю, що ви не хочете використовувати UITabBarController, але тут є вся функціональність, яку ви хочете тут. Чому ви не хочете використовувати контролер?

Метод делегата UITabBarController, який повинен працювати:

 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

Тоді ви можете повернути NO там, і вибір не зміниться.