我有一个uiTableviewController和一个uiNavigationController。我可以从uiNavigationController中的UITableViewController实现委托DidselectRowAtIndexPath,所以当我在表中选择一行时,会在uinavigationcontroller中执行一个动作吗?
答案 0 :(得分:0)
你不需要子类化UINavigationController并在那里实现UITableViewDelegate,tableView的UIViewController责任应该是委托,你可以在navigationController上运行你的操作,只需从实现tableView委托的viewController中获取它
只是举个例子:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
RSSItem *item = [_feed objectAtIndex:indexPath.row];
if (item.link) {
WebviewViewController *webViewController = [[WebviewViewController alloc] initWebViewWithLink:item.link title:item.title];
[self.navigationController pushViewController:webViewController animated:YES];
}
}
答案 1 :(得分:0)
您可以通过代码以编程方式将委托分配给不同的viewController,它更清晰。
uitableView.delegate = uinavigationviewcontroller.
但我会在第一个视图控制器中实现datasource和delegate,并在第二个viewController(在你的情况下是navigationViewController)中编写一个自定义委托,并从第一个调用didSelectRowAtIndex :.