0

我在应用程序委托中创建了一个函数,我从一个视图运行,但是当我回来再次运行该函数时,它给了我

<ResultViewController: 0x757dfc0> on <ViewController: 0x71325c0> whose view is not in the window hierarchy!

错误

应用程序委托代码正在打开一个视图控制器

代码是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    ViewController *view1 = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

    [self.window setRootViewController:view1];

    [self.window makeKeyAndVisible];

    return YES;
}
-(void)specify
{

    ResultViewController *res = [[ResultViewController alloc]init];

    CATransition *transition = [CATransition animation];
    transition.duration = 0.3;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromRight;
    [self.window.layer addAnimation:transition forKey:nil];

    [self.window.rootViewController presentModalViewController:res animated:NO];

}
4

3 回答 3

0

不运行您的代码我猜这是因为您尝试添加到的窗口在视图层次结构中不存在,您只是在创建视图并将它们添加到屏幕 - 您需要获取实际的屏幕本身。

尝试类似 UIViewController *presentController = [[[[UIApplication sharedApplication] delegate] window] rootViewController];

ViewController *view1 = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

[presentController presentViewController:view1 动画:YES 完成:nil];

于 2013-01-21T13:18:49.420 回答
0

在创建类时创建UIViewController它的父类。

似乎UIViewController不是您的类的父类,您的对象没有 .view

于 2013-01-21T13:20:07.060 回答
0

您应该在 rootViewController 的 navigationController 中显示模态视图控制器。

[self.window.rootViewController.navigationController presentModalViewController:res animated:NO];

所以,如果你真的想将模态视图控制器呈现到 rootViewController 中,请记住:

如果窗口具有现有的视图层次结构,则在安装新视图之前删除旧视图。

您第一次尝试显示模态 viewController 替换视图层次结构,但 self.window.rootViewController 没有改变,它不再在窗口层次结构中。

或类似的东西。

于 2013-01-21T13:45:17.743 回答