我正在使用Three20框架中的TTTableView类来创建具有样式内容的表格视图单元格,包括带URL的HTML。细胞外观和工作几乎都很好。获取URL,并点击其中一个适当的委托方法。但是,URL在TTWebController中打开,TTWebController没有后退箭头来弹出导航堆栈的视图。
继承我的代码:
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;
网址在单元格中突出显示,点击一个会触发此方法:
- (BOOL)navigator: (TTBaseNavigator *)navigator shouldOpenURL:(NSURL *) URL {
return YES;
}
TTWebController似乎没有被推到导航堆栈上,它只是“显示”而没有后退箭头。有什么想法吗?
使用我的解决方案进行更新 在玩了一些之后我认为问题是我正在尝试使用Three20 URL导航方法来推动新的视图控制器,同时使用常规的iOS UINavigationController。显示TTWeb控制器的点是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;
}
希望这对某人有所帮助。
答案 0 :(得分:0)
这可能会发生,具体取决于您呈现包含tableView的viewController的方式。它将viewController推送到UINavigationController或按url调用(在这种情况下,Three20会自动为你创建一个navigationController)。
您需要确保可以推送使用WebController的navigationController存在。