I've got a uitabbarcontroller set as the root view of the window. One of the tabs in the tabbar is set to a subclass of uitableviewcontroller. What I'm trying to do is show a details view when one of the rows is touched so I implemented
- (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];
}
in my table controller, but when I select the row, my detailview doesn't pop in. I added nslog to see if the function fires - and it does, but my detailview still doesn't show. Any ideas? Thanks.
You don't have a navigation controller ( [self navigationController]
is returning nil
). Instead of having the table view controller as the root of the tab, make the tab's root a navigation controller containing the table view controller. You will now be able to push the detail controller from the table view controller.
The tableViewController
should be placed inside a NavigationController
. I guess you created tableView
inside a tab bar.
TableViewControllerSubclass* table = [[TableViewControllerSubclass alloc] init];
UINavigationController* tableNav = [[UINavigationController alloc] initWithRootViewController:table];
mainController = [[UITabBarController alloc] init];
mainController.viewControllers = [NSArray arrayWithObjects:tableNav,..., nil];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.