标签栏控制器

时间:2009-07-14 14:11:25

标签: iphone iphone-sdk-3.0

我有下一个问题:

在我的项目中,我有下一个:

的UITabBarController

  ....Some UINAvigationControllers....

 *(1) UINavigationController

      UIViewController (UItableView) - When select one row it goes to...(by push)

                  UIViewController (UItableView)

我的问题是当我点击标签栏项目时,我看到了上次看到这个时的viewController视图,并且没有重新加载到*(1)第一次查看另一次。

每次我在标签栏项目中点击时,我需要写的东西我重新加载此标签栏项目的第一个视图。

谢谢!

2 个答案:

答案 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方法中的视图。每次视图控制器在屏幕上显示它的视图时都会调用它们。

也可以随意复制和粘贴您的实际代码,这通常会让事情更容易:)