Xcode4 警告:尝试在其视图不在窗口层次结构中的SampleViewController上显示UINavigationController

Xcode4 警告:尝试在其视图不在窗口层次结构中的SampleViewController上显示UINavigationController,xcode4,urbanairship.com,Xcode4,Urbanairship.com,我在这个论坛上尝试了所有的解决方案,但仍然无法解决。有人能帮我解决这些问题吗?当NSUserDefault从城市飞艇读取键@“url”时,我希望应用程序打开包含tableView的inboxData类 这来自SampleViewController类 -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSUserDefaults *defaults = [NSUserDefaults st

我在这个论坛上尝试了所有的解决方案,但仍然无法解决。有人能帮我解决这些问题吗?当NSUserDefault从城市飞艇读取键@“url”时,我希望应用程序打开包含tableView的inboxData类

这来自SampleViewController类

-(void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *action_9 = [defaults objectForKey:@"url"];

    if ([[[NSUserDefaults standardUserDefaults]objectForKey:@"url"] isEqualToString:@"aa9"])

{

        inboxData *screen=[[inboxData alloc]initWithNibName:@"inboxData" bundle:nil];
        screen.strGetTableSelect=@"1";
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:screen];
        [self presentModalViewController:navigationController animated:YES];

    }
}
它返回这些错误


警告:尝试在视图不在窗口层次结构中的SampleViewController上显示UINavigationController

您的SampleViewController不在窗口层次结构中,您需要在窗口中设置

在appDelegate中,执行以下操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[SampleViewController alloc] initWithNibName:@"SampleViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}
如果您使用的是storyboad,请在didFinishLaunchingWithOptions方法中这样使用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
                                                             bundle: nil];
 
    SampleViewController *mainViewController = (SampleViewController*)[mainStoryboard
                                                       instantiateViewControllerWithIdentifier: @"SampleViewController"];
 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:navigationController];
    [self.window setBackgroundColor:[UIColor whiteColor]];
    [self.window makeKeyAndVisible];
 
    return YES;
}
在视图控制器中

-(void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *action_9 = [defaults objectForKey:@"url"];

    if ([[[NSUserDefaults standardUserDefaults]objectForKey:@"url"] isEqualToString:@"aa9"])

{
        inboxData *screen=[[inboxData alloc]initWithNibName:@"inboxData" bundle:nil];
        screen.strGetTableSelect=@"1";
        [self presentModalViewController:screen animated:YES];

    }
}

您需要在窗口中添加导航控制器。self.window.rootViewController=self.navigationController@karthika thanx 4你的时间..你能更详细一点吗?因为我是xcode的新手..@karthika..天哪..真管用!太多了!真的很感激@卡提卡,很抱歉再次打断你。如果我只打开应用程序,这将起作用。但是,如果我打开城市飞艇的通知,另一个错误就来了。。错误为==>警告:尝试显示不在窗口层次结构中的视图!。。。你对这个问题有什么想法吗?