TTNavigation Передача данных - PullRequest
       14

TTNavigation Передача данных

1 голос
/ 15 января 2011

Кажется, что эту проблему очень трудно объяснить, поэтому я постараюсь изо всех сил.

У меня есть несколько профилей пользователей.Я хочу, чтобы все они обрабатывались одним и тем же классом.

TT://User/1
TT://User/2

Как я могу сопоставить это с тем, почему они оба подтолкнули пользовательский класс.

В дополнение к тому, как можноЯ говорю классу пользователя, какой идентификатор пользователя вытащить.

Ответы [ 2 ]

3 голосов
/ 25 января 2011

Во-первых, вам нужно сопоставить URL-адреса с контроллерами. Обычно вы делаете это в AppDelegate, так как вы хотите настроить карту URL перед вызовом URL для отображения представления.

  • Создание TTNavigator
  • Сопоставить URL-адреса с контроллерами через TTURLMap
  • Всегда начинайте с подстановочного URL, т.е. * и сопоставьте его с контроллером представления по умолчанию, таким как TTWebController (контроллер представления веб-браузера)
  • Обычно существует 2 типа URL: 1) URL без параметров и 2) URL с параметрами. В первом случае при вызове URL будет вызван initWithNibName: bundle: «constructor» контроллера отображаемого представления. Для последнего вы можете указать, какой метод init вызывать в TTURLMap. Смотрите пример ниже.
  • Фактически открывает URL через openURLAction: метод.

Вот код.

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  TTNavigator* navigator = [TTNavigator navigator];

  TTURLMap* map = navigator.URLMap;

  // This is the default map. * = wildcard, any URL not registered will be
  // routed to the TTWebController object at runtime.  
  [map from:@"*" toViewController:[TTWebController class]];
  [map from:@"tt://catalog" toViewController:[CatalogController class]];
  [map from:@"tt://user/(initWithId:)" 
toViewController:[MyUserViewController class]];
  [map from:@"tt://user/(initWithId:)" 
toViewController:[MyUserViewController class]];

  if (![navigator restoreViewControllers]) {   
    [navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://catalog"]];    
  }
}

// ...

@end

Во-вторых, подкласс TTViewController

@implementation MyUserViewController

- (id) initWithId:(NSNumber *)index {
  if (self = [super initWithNibName:nibName bundle:nil]) {
    // Do your initialization here.

    // Get the index from a singleton data manager containing the "model."
  }

  return self;
}

@end

В-третьих, перейдите по URL-адресу из любой точки приложения.

// Navigate to the URL.
[[TTNavigator navigator] openURLAction:[TTURLAction actionWithURLPath:@"tt://user/1"]];
1 голос
/ 16 января 2011
...