我有一个uitabbarcontroller设置为窗口的根视图。标签栏中的一个标签设置为uitableviewcontroller的子类。我正在尝试做的是在触摸其中一行时显示详细信息视图,因此我实现了
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!detailViewController) {
detailViewController = [[ItemDetailViewController alloc] init];
}
[detailViewController setEditingArray:
[list objectAtIndex:[indexPath row]]];
[[self navigationController] pushViewController:detailViewController animated:YES];
}
在我的表控制器中,但是当我选择行时,我的detailview没有弹出。我添加了nslog以查看该函数是否触发 - 它确实如此,但我的detailview仍然没有显示。有任何想法吗? 感谢。
答案 0 :(得分:1)
您没有导航控制器([self navigationController]
正在返回nil
)。而不是将表视图控制器作为选项卡的根,使选项卡的根成为包含表视图控制器的导航控制器。您现在可以从表视图控制器中推送详细控制器。
答案 1 :(得分:1)
tableViewController
应放在NavigationController
内。
我猜您在标签栏中创建了tableView
。
TableViewControllerSubclass* table = [[TableViewControllerSubclass alloc] init];
UINavigationController* tableNav = [[UINavigationController alloc] initWithRootViewController:table];
mainController = [[UITabBarController alloc] init];
mainController.viewControllers = [NSArray arrayWithObjects:tableNav,..., nil];