我不记得确切的 Xcode 的 Tab Bar 模板设置,但是在您的 AppDelegate 中,您可以访问您的 window rootViewController
,将其转换为 a UITabBarController
,然后将其委托设置为您的 AppDelegate 或任何其他视图控制器。
像这样的东西:
UITabBarController *tabBarController =
(UITabBarController *)[[self window] rootViewController];
[tabBarController setDelegate:self]; // In this example your app delegate would implement the UITabBarControllerDelegate protocol.
编辑
如果要将 ViewController 实例设置为委托:
UITabBarController *tabBarController =
(UITabBarController *)[[self window] rootViewController];
// I assume you have your ViewController instance set as the first view controller of your tab bar controller
// No need for a cast here since objectAtIndex: returns id, but of course you must implement the UITabBarController protocol in your ViewController.
[tabBarController setDelegate:[[tabBarController viewControllers] objectAtIndex:0]]];
编辑 2 从您的 ViewController 本身,您可以将标签栏控制器的委托设置为 rdelmar 注释。请记住,这不能在 init 方法中完成,因为视图控制器尚未在选项卡栏控制器中。正确的位置是viewDidLoad
,但因此在 ViewController 视图加载之前不会执行...
self.tabBarController.delegate = self;