2

如果用户触摸按钮,我已经设置了一个void从另一个类调用的方法。但是,我收到了“谁的视图不在窗口层次结构中”的错误,然后我发现了这个:谁的视图不在窗口层次结构中。我只想调用下面的方法,但我收到了这个错误,它没有显示navigatoncontroller. 它说Warning: Attempt to present <UINavigationController: 0xae34f10> on <ViewController: 0xae1f200> whose view is not in the window hierarchy! 我不知道​​这是否可以从viewDidAppear或从某个地方调用该方法,它仅在之前在另一个视图上点击按钮时才有效。如果我NSLog在方法中调用 a 它会在输出中显示我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 是一个实际上无关紧要的类。

提前致谢。

4

2 回答 2

2

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

于 2012-12-16T00:34:14.430 回答
0

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

但我尝试了一个黑客,它成功了..

将此行替换为

[self presentModalViewController:navController animated:YES];

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES];
于 2012-12-16T15:42:39.837 回答