我现在遇到了几个案例,它们可以方便地找到"最顶层"的视图控制器(负责当前视图的控制器),但还没有找到办法.
基本上挑战是这样的:假设一个人在一个不是视图控制器(或视图)的类中执行[并且没有活动视图的地址]并且还没有传递最顶层视图控制器的地址(或者说,导航控制器的地址),是否可以找到该视图控制器?(如果是这样,怎么样?)
或者,如果失败了,是否有可能找到最顶层的视图?
我正在尝试在我的app委托中创建一个模态视图控制器(我创建了一个名为showLoginView的函数).但每当我尝试调用它时,我会在XCode中收到警告:
Warning: Attempt to present <PSLoginViewController: 0x1fda2b40> on <PSViewController: 0x1fda0720> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)
这是方法代码:
- (void)showLoginView
{
PSLoginViewController *loginViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"PSLoginViewController"];
[self.window.rootViewController presentViewController:loginViewController animated:NO completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
如何将视图添加到窗口层次结构?或者也许我做错了什么?
这个问题已被多次询问,但即使在尝试了大部分可能的事情后,我仍然无法找到适合我的解决方案.这是错误消息.
警告:尝试在视图不在窗口层次结构中的<0x7f8f29e17590>上显示!
注意:我没有使用任何导航控制器.
我只是模态地呈现一个视图控制器,我有一个按钮,用于linkedIn注册.但每次我点击"确认"按钮时都会出现此错误,但我无法看到新的linkedIn对话框,尽管它在其他类中工作正常.
大多数解决方案建议在viewDidAppear中处理按钮单击已经尝试过,但它不起作用.
我正在使用此代码打开linkedIn注册表单
linkedinHelper.authorizeSuccess({ [unowned self] (lsToken) -> Void in
print("success lsToken: \(lsToken)")
self.requestProfile()
}, error: { [unowned self] (error) -> Void in
print("Encounter error: \(error.localizedDescription)")
}, cancel: { [unowned self] () -> Void in
print("User Cancelled!")
})
Run Code Online (Sandbox Code Playgroud)