pushviewcontroller无法正常工作,因为self.navigationController为null

时间:2011-10-03 08:00:13

标签: iphone uitableview uinavigationcontroller

我遇到了一个大问题:在方法didSelectRowAtIndexPath上,我总是将null变为self.navigationController。我有一个UIViewController,它包含一个UIsegmentedControl和一个subView。在此子视图上,我为所选的每个段添加控制器。对于每个片段,都有一个tableview。这是问题所在:当我从这个tableview中选择一行时,我无法推送下一个控制器,因为self.navigationController为null。

请帮帮我..这是我的代码:http://pastebin.com/qq0vf7mq

没有代码:

navigationTelephone=[[UINavigationController alloc] init];
    [self.view addSubview:self.navigationTelephone.view];
    [self.navigationTelephone setNavigationBarHidden:YES];
    [self.view addSubview:tableViewTelephone];

4 个答案:

答案 0 :(得分:0)

我认为你已经初始化了UINavigationController,如下所示

[[UINavigationController alloc] initWithRootViewController:ViewControllerOBj]

答案 1 :(得分:0)

更新:

您初始化实例变量navigationTelephone并显示它,但您使用self.navigationController来推送! 请改用[navigationTelephone push...]

答案 2 :(得分:0)

试试这个:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    myAudiPhoneInputViewController *myViewController = [[myAudiPhoneViewController alloc] initWithNibName:@"NIB NAME HERE" bundile:nil];
    self.myaudiPhoneInputViewController = myViewController;
    [myViewController release];

    [tableViewTelephone deselectRowAtIndexPath:indexPath animated:NO];

    if(indexPath.row==0){

        NSLog(@"Tel.personnel... %@",self.navigationTelephone);


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

    }
}

你没有实例化myaudiPhoneViewController,这就是为什么它没有推动视图。

答案 3 :(得分:0)

只需通过更改

进行检查
self.navigationTelephone=[[UINavigationController alloc] init];

Naveen Shan