Вызов метода в 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.

Другие вопросы по тегам