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]
,