簡體   English   中英

AppDelegate中的UITabBarDelegate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM