飞溅 – >导航控制器 – >表视图控制器 – >设置视图控制器
Splash是应用程序入口点,因此成为根视图控制器.当我尝试通过设置视图控制器上的 *** 作向乐队添加磁贴时,我收到调试器警告:
application[1929:1000746] Warning: Attempt to present <MSBAddTileDialogVIEwController_iOS: 0x15f0575b0> on <SplashVIEwController: 0x15dd597b0> whose vIEw is not in the window hIErarchy!
这在调用MSBClIEnt.tileManager addTile:completionHandler:之后立即发生.调用永不返回,不会生成错误.
关于如何解决这个问题的任何建议?
解决方法 您需要获取根视图控制器并从该视图控制器执行segue.这对于调试来说非常令人沮丧,但是这里有关于这个主题的一些答案.以下是我在应用程序收到推送通知时用于从根视图控制器执行segue到屏幕的一些代码.
UIStoryboard *storyboard = [UIStoryboard storyboarDWithname:@"YourStoryboard" bundle:nil];YourVIEwController *vIEwController = [storyboard instantiateVIEwControllerWithIDentifIEr:@"vIEwcontrollerIDentifIEr"];UIVIEwController *top = [UIApplication sharedApplication].keyWindow.rootVIEwController;[top presentVIEwController:vIEwController animated:YES completion: nil];
在swift中使用相同的代码:
let storyboard = UIStoryboard.init(name: "YourStoryboard",bundle: nil)let vIEwController = storyboard.instantiateVIEwController(withIDentifIEr: "vIEwcontrollerIDentifIEr")let top = UIApplication.shared.keyWindow?.rootVIEwControllertop?.present(vIEwController,animated: true,completion: nil)
确保在故事板中设置视图控制器标识符.
编辑*如果您正在访问的视图控制器嵌入在导航控制器中,您将需要修改上述代码,
目标C:
UIVIEwController *top = [self topMostController];UINavigationController *navigationController = [[UINavigationController alloc] initWithRootVIEwController:vIEwController];[top presentVIEwController:navigationController animated:YES completion: nil];
迅速:
let top = UIApplication.shared.keyWindow?.rootVIEwControllerlet navigationController = UINavigationController.init(rootVIEwController: vIEwController)top?.present(navigationController,completion: nil)总结
以上是内存溢出为你收集整理的ios – 尝试呈现其视图不在窗口层次结构中的UIViewController全部内容,希望文章能够帮你解决ios – 尝试呈现其视图不在窗口层次结构中的UIViewController所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)