self.navigationController是TableViewController中的(null),它位于TabBarController上

时间:2015-03-23 08:12:57

标签: ios objective-c

我试图在iOS中创建一个小应用。登录页面之后,我有一个TabBarController,其中的第一个选项卡是TableViewController。在didSelectRowAtIndexPath中,我尝试为每个选定的行推送一个视图控制器。当我使用NSLog打印它并且我无法推送ViewController时,相同的视图控制器但是self.navigationController是(null)。 HELP !!

以下是示例代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here, for example:
    // Create the next view controller.
    PlayerDetailsViewController *detailViewController = [[PlayerDetailsViewController alloc] initWithNibName:@"PlayerDetailsViewController" bundle:nil];
    detailViewController.myImg.image=[UIImage imageNamed:[self.arrNames objectAtIndex:indexPath.row]];
    detailViewController.name.text=[self.names objectAtIndex:indexPath.row];
    detailViewController.year.text=[self.draft objectAtIndex:indexPath.row];
    detailViewController.height.text=[self.height objectAtIndex:indexPath.row];
    detailViewController.weight.text=[self.weight objectAtIndex:indexPath.row];
    detailViewController.pro.text=[self.pro objectAtIndex:indexPath.row];
    detailViewController.ppg.text=[self.ppg objectAtIndex:indexPath.row];
    detailViewController.apg.text=[self.apg objectAtIndex:indexPath.row];
    detailViewController.rpg.text=[self.rpg objectAtIndex:indexPath.row];
    NSLog(@"%@",self.navigationController);


    [self.navigationController pushViewController:detailViewController animated:YES];

}

更新:我让navigationController工作但现在,推送视图中的数据(PlayerDetails)为空白!!

2 个答案:

答案 0 :(得分:0)

你没有在UINavigationController中嵌套你的firstViewController,这是错的。

所以我猜你的代码在创建UITabViewController时会是这样的。

[tabVC setViewControllers:[vc1,vc2,nil]];//tabVC = UITabViewController

需要改变下面的内容;​​

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc1];
[tabVC setViewControllers:[nav,vc2,nil]];

答案 1 :(得分:0)

假设UITabBarController的实例为tabVCUITableViewController的实例为tableVC

UINavigationController *nav = [[UINavigationController alloc initWithRootViewController:tabVC];

UINavigationController *nav = [[UINavigationController alloc initWithRootViewController:tableVC];
[tabVC setViewControllers:@[nav]];

两者都可以解决您的问题。