![](/img/trans.png)
[英]iPhone SDK warning: class MyAppViewController does not implement the 'UITabbarDelegate' protocol
[英]UITabBarDelegate in AppDelegate
我的主窗口中有一個UITabController,並且希望在選擇每個選項卡時添加一些邏輯。 我已將委托添加到頭文件中:
@interface MyAppAppDelegate : NSObject <UIApplicationDelegate, UITabBarDelegate> {
我有一個選項卡更改事件的方法:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
//some code
}
但是didSelectItem方法中的代碼沒有被調用。 我已經將UITabBarController的委托連接到IB中的AppDelegate。 還有什么我需要做的嗎?
如果通過IB分配委托,則應將TabBar的委托(而不是TabBarController)連接到應用程序委托。
實際上,您並不是在尋找UITabBarControllerDelegate
,而是在尋找UITabBarDelegate
。
如果您以編程方式執行此操作,則從選項卡欄控制器viewDidLoad
執行:
self.tabBar.delegate = [UIApplication sharedApplication].delegate;
如果使用UITabbarController
,則可以使用UITabBarControllerDelegate
而不是UITabBarDelegate
。
然后,您可以設置self.delegate = self
。 然后您使用:
(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
代替:
(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
您是否分配了某些類作為標簽欄的代表? 就像是
myTabBar.delegate = self;
我可能不在這里,但我認為該方法的簽名應為:
- (IBAction)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
然后將其連接到IB中的標簽欄。 更改為IBAction后,它應該出現在IB中
我最終將其放在所需的特定選項卡中的視圖的viewWillAppear方法中。 似乎工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.