尝试显示其视图不在窗口层次结构警报中
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 present from appdelegate 错误:警告:尝试显示〜其视图不在窗口层次结构中