我想我已经完成了我的作业。
我希望我的app委托成为我UITabBarController
的委托。
使用IB,我已将UITabBarController
的委托连接到我的应用程序代表。
App Delegate Header文件是:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
我试图实现的委托方法是:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
NSLog(@"shouldSelectViewController called.");
// do some stuff with viewController
return YES;
}
我的应用代表有一个出口到IB中连接的UITabBarController
。当我这样做时:
NSLog(@"tab bar controller delegate is %@", self.tabBarController.delegate);
我得到了一个很好的结果,例如tab bar controller delegate is <MyAppDelegate: 0x6e86a30>
。
我错过了什么?
答案 0 :(得分:5)
只需编写此代码
self.tabBarController.delegate = self;
答案 1 :(得分:2)
好的,找到了解决方案。我的RootViewController
中有一些旧代码将此控制器设置为委托。 RootViewController
上没有实施任何委托方法,因此似乎没有发生任何事情。由于RootViewController
被设置为MyAppDelegate
之后的委托,因此委托实际上设置为RootViewController
。
所以本课程是仔细检查你的代码,以确保其他一些对象也没有被设置为委托。