Контроллер навигации пуст - PullRequest
1 голос
/ 11 августа 2011

У меня есть приложение с разделенным видом, которое позволяет пользователю выбирать и отображать эскиз выбранного изображения. Я поместил UIButton в detailViewController с помощью Interface Builder. Когда эта кнопка нажата, я бы хотел, чтобы она сменилась на полноэкранный вид изображения. Я установил новый View Controller, который называется 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 Ответ

1 голос
/ 11 августа 2011

Из кода, который вы публикуете, невозможно определить проблему, но две общие причины для self.navigationController равны нулю:

  1. вы не толкнули объект позади self в первую очередь к контроллеру навигации; на самом деле это так, поскольку контроллер навигации добавляется как подпредставление контроллера разделенного представления; возможно, вы имеете в виду обратное ... не уверен ...

  2. (под-случай 1) вы показали объект за self, используя presentViewControllerModally.

Когда я говорю «объект, стоящий за self», я имею в виду экземпляр класса, в котором определен pressFullViewButtonFunction.

Если вам нужна дополнительная помощь, опубликуйте код, куда вы помещаете свои контроллеры на контроллер навигации ...

На боковой ноте, если вы делаете:

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

и nvcontrol не является иваром, тогда у вас есть утечка.

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...