Пример навигации на основе URL + панели вкладок в Three20? - PullRequest
4 голосов
/ 24 февраля 2010

Я только что узнал, как легко (или, по крайней мере, должно быть) делать сохранение состояния с библиотекой Three20 . Однако я не могу понять, как использовать преобразователь URL-адресов с панелью вкладок (UITabBarController).

Ситуация такова:

  1. У меня есть четыре вкладки и различные контроллеры для них: FirstViewController, SecondViewController, ThirdViewController и FourthViewController.
  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?

1 Ответ

6 голосов
/ 24 февраля 2010

Итак, я только что узнал о TTNavigatorDemo; -)

Обновление: , а также написал учебник, см. http://three20.pypt.lt/url-based-navigation-and-state-persistence

...