在视图中调用方法确实出现



我已经设置了一个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是一个实际上无关紧要的类。

提前谢谢。

错误消息非常清楚 - 您正在尝试显示此类中的控制器,但具有您按下的按钮的类是其视图位于视图层次结构中的类。你要么需要使用按钮从类中呈现它,要么返回到这个类,然后回到你正在这样做的类,然后在 viewDidShow 之后调用它。

我检查了你的项目..无法解决正确的问题..

但我尝试了一个黑客,它奏效了。

将此行替换为

[self presentModalViewController:navController animated:YES];

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES];

最新更新