导航控制器为空

时间:2011-08-11 17:04:18

标签: ios uinavigationcontroller

我有一个拆分视图应用程序,允许用户选择和显示所选图像的缩略图。我使用Interface Builder在detailViewController中放置了一个UIButton。按下此按钮时,我希望将其更改为图像的全屏视图。我已经设置了一个名为FullViewController的新视图控制器,并认为我已将所有内容连接起来。问题是导航控制器为空。我将AppDelegate.m调整为以下内容:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
// Override point for customization after app launch.
// Set the split view controller as the window's root view controller and display.
self.window.rootViewController = self.splitViewController;
UINavigationController *nvcontrol =[[UINavigationController alloc] initWithRootViewController:fullViewController];
[window addSubview:nvcontrol.view];
[self.window makeKeyAndVisible];
return YES;
}

这是DetailViewController.m中的函数,按下按钮时会调用该函数。导航控制器在此处显示为空。

//Function called when button is pressed - should bring up full screen view
- (IBAction) pressFullViewButtonFunction: (id) sender{
//viewLabel.text = @"Full View";    
if (fullViewController == nil){
    FullViewController *fullViewController = [[FullViewController alloc] initWithNibName:@"FullViewController" bundle:[NSBundle mainBundle]];
    NSLog(@"fullViewController is %@", fullViewController);
    self.fullViewController =  fullViewController;
}
NSLog(@"self.navigationController is %@",self.navigationController);//this is null
[self.navigationController pushViewController:self.fullViewController animated:YES];

}

我不知道如何解决这个问题。我已经尝试在AppDelegate中添加几行,但是当它运行时,根视图中的表不会显示,并且它不再在纵向和横向视图之间正确切换。

如果有助于澄清,我可以随时使用其余的代码。请告诉我! 感谢。

1 个答案:

答案 0 :(得分:1)

从您发布的代码中无法确定问题,但self.navigationController为零的两个常见原因是:

  1. 您没有将self后面的对象推到导航控制器上;实际上似乎是这样,因为导航控制器被添加为分割视图控制器的子视图;可能你的意思相反......不确定...

  2. (1的子案例)您使用selfpresentViewControllerModally显示了对象。

  3. 当我说“self背后的对象”时,我指的是定义pressFullViewButtonFunction的类的实例。

    如果您需要更多帮助,请将控制器上的代码发布到导航控制器......

    旁注,如果你这样做:

    UINavigationController *nvcontrol =[[UINavigationController alloc] initWithRootViewController:fullViewController];
    

    nvcontrol不是ivar,然后你有泄漏。

    希望这会有所帮助......