【发布时间】:2012-10-07 05:51:24
【问题描述】:
首先,我将两个视图控制器都设置为 UITabBarController 委托。两者都是标签栏控制器的一部分。我通过将以下代码放入每个 viewDidLoad 来做到这一点:
self.tabBarController.delegate = self;
然后我在 CalculatorsViewController 中添加了以下委托方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[self presentCalculatorsView];
}
presentCalculators 视图仅显示同一视图控制器中的子视图。
我还在 OptionsViewController 中添加了以下委托方法:
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[self presentHomeScreen];
}
同样,此方法只是在 viewController 中显示另一个子视图。
我遇到的问题是,仅当我不访问 CalculatorsViewController 时才会调用 OptionsViewController presentHomeScreen 方法。一旦我访问了应用程序中的 CalculatorsViewController 然后返回到 OptionsViewController,
[self presentHomeScreen]
永远不会被调用。事实上,它似乎仍然从 CalculatorsViewController 调用该方法。我用 NSLog 语句对其进行了测试。
知道为什么一种方法会覆盖另一种方法吗?或者为什么标签栏按钮从另一个 viewController 执行代码,而不是处于活动状态的那个?
EDIT* 就好像一个视图控制器从另一个视图控制器“窃取”了委托。
【问题讨论】:
标签: ios uiviewcontroller delegates uitabbarcontroller ios6