我刚刚发现做 state persistence with Three20 library 是多么容易(或者至少应该是)。但是,我无法弄清楚如何使用带有标签栏 ( UITabBarController
) 的 URL 映射器。
情况是这样的:
FirstViewController
、 SecondViewController
、 ThirdViewController
和 FourthViewController
。 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/