在viewDidAppear中调用方法

时间:2012-12-16 00:26:23

标签: iphone ios uinavigationcontroller presentmodalviewcontroller viewdidappear

我设置了一个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实际上并不重要。

提前致谢。

2 个答案:

答案 0 :(得分:2)

错误消息非常清楚 - 您正在尝试从此类呈现控制器,但是按下您按下的按钮的类是其视图位于视图层次结构中的类。您需要使用按钮从类中显示它,或者返回到此类但是您正在执行此操作,然后在viewDidAppear之后调用它。

答案 1 :(得分:0)

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

但是我尝试了一个黑客并且它有效..

替换此行
[self presentModalViewController:navController animated:YES];

:此

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