TTNavigator не правильно открывает TTURLMap при передаче параметров

Я пытаюсь передать параметры через Three20 для iOS способом, подобным этому вопросу: многопараметрическое сопоставление с Three20 и TTURLMap

Однако я сталкиваюсь с проблемой, к которой этот вопрос не относится. Мое отображение в настоящее время настроено как

    [map from:@"sb://launcher/(initWithAccount:)" toModalViewController:[AccountOverviewViewController class] transition:0];

Чтобы попасть туда, я звоню:

    NSString *URL = [NSString stringWithFormat:@"sb://launcher/%@", [@"hey" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[TTNavigator navigator] openURLAction:[[TTURLAction actionWithURLPath:URL] applyAnimated:YES]];

Затем в AccountOverviewViewController у меня есть

- (void)initWithAccount:(NSString *)name {
NSLog(name);

}

чтобы убедиться, что я получаю правильное значение (которое я есть), поскольку Console.app выводит "эй". Все, что работает нормально, за исключением одной вещи, AccountOverviewViewController никогда не появляется! Вызывается метод initWithAccount: внутри него, но он никогда не отображается на экране. Я пропустил здесь шаг, чтобы заставить контроллер получить параметр И показать себя?

Благодарю.

2 ответа

Это отлично работает:

NSString *strTTURL = [NSString stringWithFormat:@"tt://PhotoDetail/%@",photoID];
TTURLAction *urlAction=[[[TTURLAction alloc] initWithURLPath:strTTURL] autorelease];
urlAction.animated=YES;
[[TTNavigator navigator]openURLAction:urlAction];

Ваш initWithAccount:(NSString*)name метод неверен. Следует читать - (id)initWithAccount:(NSString*)name и это должно вернуть себя. TTNavigator использует это возвращаемое значение (это потомок UIViewController) и передает его в контроллер навигации. Поскольку вы ничего не возвращаете, это просто удача, что приложение не падает, а просто ничего не отображает.

Шаблон для использования в любом методе, который начинается с init в Cocoa Touch:

- (id) initWithSomething:(id)something {
    if (self = [<designated initializer>]) {
        //Do something here.
    }
    return self;
}

Первая строка зависит от того, из какого класса вы производите подклассы. Вы всегда хотели бы вызвать назначенный инициализатор. Итак, если вы подклассы UIViewController или TTViewController, если будет [self initWithNibName:nil bundle:nil],

Другие вопросы по тегам