Вызов метода в viewDidAppear
Я создал void
метод, который вызывается из другого класса, если пользователь касается кнопки. Тем не менее, я получил эту ошибку с "чье представление не в иерархии окон", а затем я нашел это: чье представление не в иерархии окон. Я просто хочу вызвать метод ниже, но я получил эту ошибку, и она не показывает мне navigatoncontroller
, Это говорит Warning: Attempt to present <UINavigationController: 0xae34f10> on <ViewController: 0xae1f200> whose view is not in the window hierarchy!
Я не знаю, если это возможно, чтобы вызвать метод из viewDidAppear
или откуда-то, что это работает, только если кнопка была нажата на другой вид раньше. Если я позвоню NSLog
в методе это показывает мне NSLog
на выходе. Только представление navController
не похоже на работу. Я был бы счастлив, если бы кто-то мог помочь мне с этим.
Мой метод:
- (void) launchGalleryView
{
MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
// Set browser options.
browser.wantsFullScreenLayout = YES;
browser.displayActionButton = NO;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browser];
NSMutableArray *photos = [[NSMutableArray alloc] init];
MWPhoto *photo;
photo = [MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"calculator" ofType:@"jpg"]];
photo.caption = @"The calculator is soo beauteful...";
[photos addObject:photo];
self.photos = photos;
[self presentModalViewController:navController animated:YES];
}
Просто забыл сказать: MWPhotoprowser - это класс, который на самом деле не имеет значения.
Заранее спасибо.
2 ответа
Я проверил ваш проект.. не смог разобраться в правильной проблеме..
но я попытался взломать, и это сработало..
заменить эту строку на
[self presentModalViewController:navController animated:YES];
этот
[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES];
Сообщение об ошибке довольно ясно - вы пытаетесь представить контроллер из этого класса, но класс, в котором нажата кнопка, является тем, чье представление находится в иерархии представлений. Вам нужно либо представить его из класса с помощью кнопки, либо вернуться к этому классу, как бы вы это ни делали, а затем вызвать его после viewDidAppear.