2010-02-23 44 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

回答