我有下一个问题:
在我的项目中,我有下一个:
的UITabBarController
....Some UINAvigationControllers....
*(1) UINavigationController
UIViewController (UItableView) - When select one row it goes to...(by push)
UIViewController (UItableView)
我的问题是当我点击标签栏项目时,我看到了上次看到这个时的viewController视图,并且没有重新加载到*(1)第一次查看另一次。
每次我在标签栏项目中点击时,我需要写的东西我重新加载此标签栏项目的第一个视图。
谢谢!
答案 0 :(得分:2)
如果我正确理解了您的问题,那么当您选择标签栏项目时,您正尝试将导航控制器返回到根元素。
要执行此操作,请将一些对象(例如,您的应用程序委托,但它可以是其他对象)设置为UITabBarController的委托。 (如果您使用应用程序委托,它将是多个事物的委托,这很好。)然后,实现tabBarController:didSelectViewController:
方法。在该方法中,告诉选定的视图控制器(应该是NavigationController)返回根视图控制器。
像这样的东西。将此实现添加到AppDelegate.m类:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[viewController popToRootViewControllerAnimated:NO];
}
在.xib文件中,将TabBarController的委托设置为AppDelegate。 (如果以编程方式创建tabBar,则必须在那里以编程方式执行。)
如您所料,尝试在导航控制器中存在的视图控制器的viewWillAppear
方法或任何其他方法中执行此操作不是正确的方法。这是一种在导航控制器上执行的方法,由标签栏的代表检测。
答案 1 :(得分:0)
尝试使用您的回调代码重新加载viewWillAppear或viewDidAppear方法中的视图。每次视图控制器在屏幕上显示它的视图时都会调用它们。
也可以随意复制和粘贴您的实际代码,这通常会让事情更容易:)