我设置了一个void
方法,如果用户触摸按钮,则从另一个类调用该方法。
但是,我得到了这个错误,“其视图不在窗口层次结构中”,然后我发现了这个:whose view is not in the window hierarchy。我只是想调用下面的方法,但是我收到了这个错误,它没有显示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实际上并不重要。
提前致谢。
答案 0 :(得分:2)
错误消息非常清楚 - 您正在尝试从此类呈现控制器,但是按下您按下的按钮的类是其视图位于视图层次结构中的类。您需要使用按钮从类中显示它,或者返回到此类但是您正在执行此操作,然后在viewDidAppear之后调用它。
答案 1 :(得分:0)
我检查了你的项目..无法解决正确的问题..
但是我尝试了一个黑客并且它有效..
用
替换此行[self presentModalViewController:navController animated:YES];
:此强>
[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES];