2010-02-23 45 views
4

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

的情况是这样的:

  1. 我有四个标签和不同的控制器为他们:FirstViewControllerSecondViewControllerThirdViewControllerFourthViewController
  2. 我想分别将它们映射到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

回答