Iphone 在故事板中创建TabBarControllerDelegate

Iphone 在故事板中创建TabBarControllerDelegate,iphone,xcode4,delegates,ios5,uitabbarcontroller,Iphone,Xcode4,Delegates,Ios5,Uitabbarcontroller,我在脚本驱动的iOS5应用程序中创建uitabarcontrollerdelegate时遇到困难。情况如下: 我有一个初始屏幕,最终将处理登录,但目前只有一个按钮,发送用户到 …具有五个选项卡的选项卡栏控制器。每个选项卡都指向 …根目录下具有多个子视图控制器的导航控制器 (如果有帮助,请提供相关故事板部分的屏幕截图。) 当用户切换选项卡时,我始终希望将用户定向到该特定导航控制器的根视图控制器,而不是最近访问的视图控制器(这是默认行为) 我知道要做到这一点,我需要在按下选项卡时调用Poptoroo

我在脚本驱动的iOS5应用程序中创建uitabarcontrollerdelegate时遇到困难。情况如下:

  • 我有一个初始屏幕,最终将处理登录,但目前只有一个按钮,发送用户到
  • …具有五个选项卡的选项卡栏控制器。每个选项卡都指向
  • …根目录下具有多个子视图控制器的导航控制器
  • (如果有帮助,请提供相关故事板部分的屏幕截图。)

    当用户切换选项卡时,我始终希望将用户定向到该特定导航控制器的根视图控制器,而不是最近访问的视图控制器(这是默认行为)

    我知道要做到这一点,我需要在按下选项卡时调用PoptorootViewController,正如前面讨论的那样,但我不知道如何在情节提要中实现这一点。我怎样才能做到这一点,而不放弃故事板,重新开始


    谢谢

    您的问题有多种解决方案(这是设计模式决策的问题)。其中一些可能是:

  • 子类UITabBarController,并将其设置为故事板中tabbar的自定义类(同时将委托连接到对象以便处理),并重写-tabBarController:didSelectViewController:委托方法

  • 通过从要实现此行为的每个视图的ViewWillEnglishe事件中调用-poptrootviewcontrolleranimated来弹出到根目录


  • 您可以创建自己的TabBarController,实现实例化视图控制器的方法

    -(UIViewController*) viewControllerWithTabTitle:(NSString*) title 
                                        viewController(NSString *)viewController {
    
    UIViewController* returnViewController = [self.storyboard 
                                 instantiateViewControllerWithIdentifier:viewController];
    
      return returnViewController;
    }
    
    然后在viewDidLoad方法中,使用视图控制器创建数组,在您的情况下,该数组将是在InterfaceBuilder上设置的NavigationController的标识符

    - (void)viewDidLoad {
    
      self.viewControllers=
    [NSArray arrayWithObjects:
     [self viewControllerWithTabTitle:@"Option 1" viewController:@"viewController1"],
     [self viewControllerWithTabTitle:@"Option 2" viewController:@"viewController2"],
     [self viewControllerWithTabTitle:@"Option 3" viewController:@"viewController3"],
     [self viewControllerWithTabTitle:@"Option 4" viewController:@"viewController4"],
     [self viewControllerWithTabTitle:@"Option 5" viewController:@"viewController5"], nil];
    
     }
    

    这对我来说非常有效。我能够将选项卡从多个UITabbarController重新路由到同一个选项卡/视图控制器,因此我不必像故事板本身那样复制它们。