我的应用程序中有一个TabBar,我在AppDelegate中执行此操作:
...
test2ViewController = [[Test1ViewController alloc] init];
...
navigationTest2Controller = [[UINavigationController alloc] initWithRootViewController:test2ViewController];
NSArray *myControllers = [NSArray arrayWithObjects:..., navigationTest2Controller, nil];
[self.myTabBarController setViewControllers:myControllers animated:NO];
现在我遇到的问题是我在ViewController中,我想切换到“navigationTest2Controller”。我在AppDelegate中执行此操作:
self.myTabBarController.selectedViewController = navigationTest2Controller;
这很有效。它切换到这个ViewController!此ViewController已加载,并且调用了viewDidLoad方法。在这个viewDidLoad方法是一个方法调用:
[self myMethod];
我想,如果视图切换到此ViewController,则应始终调用此“myMethod”。 我怎样才能做到这一点?在我的AppDelegate行
之前self.myTabBarController.selectedViewController = navigationTest2Controller;
???或者是否每次选择/切换到ViewController时都会调用另一个委托?
有谁知道这个?
提前多多感谢&最诚挚的问候。
答案 0 :(得分:2)
当视图在视图控制器的-viewWillAppear:
或-viewDidAppear
方法中可见时,您应该放置要运行的任何代码。
编辑:要从某个视图切换时,只允许 ,您可以继承UITabBarController
,只修改–tabBarController:shouldSelectViewController:
方法。在那种方法中,你可以这样做:
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
{
if (self.selectedIndex == 1 &&
[viewController respondsToSelector:@selector(myMethod)]) {
[viewController myMethod];
}
return YES;
}