Я использую класс TTTableView из структуры Three20 для создания ячеек таблицы со стильным контентом, включая HTML с URL-адресами. Клетки выглядят и работают почти нормально. URL-адрес выбирается и нажимает на один из огней соответствующий метод делегирования. Тем не менее, URL-адрес открыт в TTWebController, у TTWebController нет обратной стрелки, чтобы отобразить представление стека навигации.TTNavigator не нажимает на навигационный стек
Heres мой код:
TTTableStyledTextItem *messageItem = [TTTableStyledTextItem itemWithText:[TTStyledText textFromXHTML:message lineBreaks:YES URLs:YES]];
messageItem.delegate = self;
TTListDataSource *dataSource = [[TTListDataSource alloc] init];
[dataSource.items addObject:messageItem];
TTNavigator* navigator = [TTNavigator navigator];
navigator.delegate = self;
navigator.window = [UIApplication sharedApplication].delegate.window;
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
self.tableView.dataSource = dataSource;
self.tableView.delegate = self;
URL-адреса, которые выделены в клетках и нажав одну пожары этот метод:
- (BOOL)navigator: (TTBaseNavigator *)navigator shouldOpenURL:(NSURL *) URL {
return YES;
}
TTWebController не кажется, толкнул на навигационный стек, он просто «показан» без обратной стрелки. Есть предположения?
Обновление с моим решением После игры вокруг еще немного, я думаю, что проблема заключается в том, что я пытаюсь использовать метод URL навигации Three20 протолкнуть новый контроллер представления, в то же время с помощью обычного IOS UINavigationController. Точка, в которой отображается TTWebcontroller, является первым контроллером представления в стеке навигации Three20 и, как таковой, является контроллером корневого представления и поэтому не имеет понятия «вернуться» к предыдущему виду.
Вот моя работа вокруг:
- (BOOL)navigator: (TTBaseNavigator *)navigator shouldOpenURL:(NSURL *) URL {
// setup a webcontroller with the URL and push it
TTWebController *webController = [[TTWebController alloc] init];
[webController openURL:URL];
[self.navigationController pushViewController:webController animated:YES];
[webController release];
// dont navigate with TTBaseNavigator
// this does not use the regular UINavigation stack and
// ... the new view becomes rootview and has no back button
return NO;
}
Надеется, что это помогает кто-то.
Контроллер вида, содержащий представление таблицы, помещается в обычный UINavigationControler, и это самый верхний вид контроллера в примере кода, который я дал. Я бы подумал, что вызов WebController, вызванный вызовом, также будет нажат. Нужно ли конкретно указывать WebController или TTNavigator ссылку на используемый UINavigationControllr? – lukestringer90
Нет, это обычно не так, но, возможно, стоит попробовать. Используйте 'setRootViewController:' на 'TTNavigator'. – tonklon
Там до сих пор нет радости. – lukestringer90