Я только что узнал, как легко (или, по крайней мере, должно быть) делать сохранение состояния с библиотекой Three20 . Однако я не могу понять, как использовать преобразователь URL-адресов с панелью вкладок (UITabBarController
).
Ситуация такова:
- У меня есть четыре вкладки и различные контроллеры для них:
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
?