我刚刚发现做 state persistence with Three20 library 是多么容易(或者至少应该是)。但是,我无法弄清楚如何使用带有标签栏 ( UITabBarController ) 的 URL 映射器。

情况是这样的:

  • 我有四个选项卡和不同的 Controller : FirstViewControllerSecondViewControllerThirdViewControllerFourthViewController
  • 我想将它们分别映射到 tt://tabs/first , ..., tt://tabs/fourth ,并在应用程序关闭时将它们保存在某处,以便在应用程序再次启动时自动打开先前查看的选项卡。

  • 到目前为止我的代码:
    // Init the tab bar
    tabBarController = [[UITabBarController alloc] init];
    [tabBarController setDelegate:self];
    
    // Init the navigator
    TTNavigator *navigator = [TTNavigator navigator];
    [navigator setWindow:window];
    [navigator setPersistenceMode:TTNavigatorPersistenceModeAll];
    
    // Begin mapping
    TTURLMap *map = [navigator URLMap];
    [map from:@"tt://tabs" toViewController:[UIViewController class]];
    [map from:@"tt://tabs/first" toViewController:[FirstViewController class]];
    [map from:@"tt://tabs/second" toViewController:[SecondViewController class]];
    [map from:@"tt://tabs/third" toViewController:[ThirdViewController class]];
    [map from:@"tt://tabs/fourth" toViewController:[FourthViewController class]];
    
    // Try restoring
    if (! [navigator restoreViewControllers]) {
      // Open default
      TTURLAction *defaultAction = [[TTURLAction alloc] initWithURLPath:@"tt://tabs/default"];
      [defaultAction setParentURLPath:@"tt://tabs"];
      [navigator openURLAction:defaultAction];
    }
    
    // Put view controllers to tab bar
    [tabBarController setViewControllers:[NSArray arrayWithObjects:
                                          [[FirstViewController alloc] init],
                                          [[SecondViewController alloc] init],
                                          [[ThirdViewController alloc] init],
                                          [[FourthViewController alloc] init],
                                          nil]];
    
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
    

    如何让 TTNavigator 打开最后打开的选项卡,如果没有 - 回退到 FirstViewController

    最佳答案

    所以,我刚刚发现了 TTNavigatorDemo ;-)

    更新: 并且还写了一个教程,见 http://three20.pypt.lt/url-based-navigation-and-state-persistence

    关于iphone - Three20的基于URL的导航+标签栏示例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2322406/

    10-12 22:27