2012-08-27 35 views
1

我有一个UIViewController与其中的两个UITableView的。当我在第一个UITableView中选择一行时,它必须推送相同的UIViewController,这不会发生。pushViewController不工作,即使我有一个导航控制器

在UIViewController.h我有,

FirstTableViewController *firstController; 
SecondTableViewController *secondController; 

在UIViewController.m我有,

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    if (firstController == nil) { 
     firstController = [[FirstTableViewController alloc] init]; 
    } 
    if (secondController == nil) { 
     secondController = [[SecondTableViewController alloc] init]; 
    } 
    UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithRootViewController:firstController]; 
    firstController.product = self.product; 
    [firstTable setDataSource:firstController]; 
    [firstTable setDelegate:firstController]; 
    firstNavigationController.view = firstController.tableView; 
} 

在FirstTableViewController.m,didSelectRowAtIndexPath方法我有,

[self.searchDisplayController setActive:YES animated:YES]; 
UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
controller.product = prod; 
NSLog(@"Navigation controller is %@",self.navigationController); //not null 
[[self navigationController]pushViewController:controller animated:YES]; 

请帮助。编辑#1:UIViewController从UtilityApp的FlipsideViewController调用。

+0

'[self navigationController]'返回'nil'? – dasblinkenlight

+0

不,它返回

回答

0

如果你想显示视图控制器模态,你应该使用presentViewController:animated:completion:而不是pushViewController:animated:

[self presentViewController:controller animated:YES completion:nil]; 
+0

不需要..我需要推它..因为它们是DetailViewControllers。当我尝试模态来呈现它,我得到以下错误应用程序试图把模态启动控制 –

+0

加载的控制器不是零要么? – DrummerB

+0

不。它的

0

使用此代码在 “didSelectRowAtIndexPath方法”

UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil]; 


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

    [viewController release]; 
+0

这就是他所做的。 – DrummerB

+0

杰克。 –

1

属性添加到您的AppDelegate UINavigationController *nav 应用didFinishLaunching方法

navigationControl = [[UINavigationController alloc] initWithRootViewController:yourFirst ViewController]; 

转到yourFirstViewController此行添加到AppDelegate.m ,添加UINavigationController *nav属性并将这些行添加到viewDidLoad方法

AppDelegate *app = [[UIApplication sharedApplication] delegate]; 
self.nav = app.nav; 

使用此线推任何的viewController

[self.nav pushViewController:controller animated:YES]; 
+0

不工作,因为UIViewController不是我的第一个ViewController。 UIViewController从UtilityApp的FlipsideView中调用。 –

+0

能否请您检查您的viewController是推不为零。 – tausun

+0

检查了它。它不是零 –

0

LoginViewSimpleController * loginViewSimple = [[LoginViewSimpleController的alloc] INIT];

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:loginViewSimple]; 

[self setNavigationController:navController]; 

您是否确定了两种tableviews?你可以在这里发布日志状态吗?

相关问题