简体   繁体   中英

iOS pushing view controller not working

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM