尝试显示其视图不在窗口层次结构警报中

Posted

技术标签:

【中文标题】尝试显示其视图不在窗口层次结构警报中【英文标题】:Attempt to present whose view is not in the window hierarchy alert 【发布时间】:2017-06-20 20:41:24 【问题描述】:

当我将以下代码放入 Viewdidload 时,我会返回一个警告:

警告:尝试呈现不在窗口层次结构中的视图!

我尝试将它放在 ViewdidAppear 中,但没有显示警报。

我该如何解决这个问题?

代码:

UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Login"
                                                                              message: @"Input username and password"
                                                                       preferredStyle:UIAlertControllerStyleAlert];
    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) 
        textField.placeholder = @"Public Key";
        textField.textColor = [UIColor blueColor];
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.borderStyle = UITextBorderStyleRoundedRect;
    ];
    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) 
        textField.placeholder = @"Private Key";
        textField.textColor = [UIColor blueColor];
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.secureTextEntry = YES;
    ];
    [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) 
        NSArray * textfields = alertController.textFields;
        UITextField * publickey = textfields[0];
        UITextField * privatekey = textfields[1];
        [[NSUserDefaults standardUserDefaults] setObject:publickey.text forKey:@"privateKey"];
        [[NSUserDefaults standardUserDefaults] setObject:privatekey forKey:@"publicKey"];
        NSLog(@"%@:%@",publickey.text,privatekey.text);
    ]];

谢谢。

【问题讨论】:

【参考方案1】:

您不能在viewDidLoad 中显示任何内容是正确的,因为此时视图本身并未显示,因此本身无法显示另一个视图。

但是,在 viewDidAppear 中显示它应该可以工作。但是您在此处发布的代码不包含 show 命令。你能检查一下你是否错过了移动这个吗?

【讨论】:

以上是关于尝试显示其视图不在窗口层次结构警报中的主要内容,如果未能解决你的问题,请参考以下文章

警告:尝试在视图不在窗口层次结构中的 <App name:> 上显示 <UIAlertController:>

尝试呈现 * 其视图不在窗口层次结构中

Swift 3 尝试呈现其视图不在窗口层次结构中

swift 3 present from appdelegate 错误:警告:尝试显示〜其视图不在窗口层次结构中

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController