我有几个标签。在当前选项卡中打开设置视图时,我也希望在其他选项卡中也打开设置视图。关闭时,我想获得相同的行为。
而我做到了。当我打开设置时,我使用segue方法:
navControllers.forEach { navController in navController.topViewController!.performSegue(withIdentifier: "showSettings", sender: nil) }
我关闭时使用:
navControllers.forEach { navController in navController.popViewController(animated: false) }
一切都很完美,直到最近更新了Xcode和快速版本。
此后,我开始在控制台中收到有关“关闭代码”的运行时警告消息:
UITableView被告知布局其可见单元格和其他内容 而不属于视图层次结构(表视图或其其中之一) 超级视图尚未添加到窗口)
在调试器中检查视图层次结构后,我发现它实际上对设置表视图大吼大叫!视图“不在视图层次结构中”似乎是由于关闭而不再存在的视图!
它看起来确实像系统错误。但是我该如何绕过呢?非常令人沮丧。
答案 0 :(得分:2)
仅需注意,我还发现,如果您调用File.AppendAllText(logPath, "some text" + Environment.NewLine);
,并将代码粘贴到其中,它也将起作用,而不必从超级视图中删除该元素。
例如:
DispatchQueue.main.async
在本苹果论坛结束时找到了解决方案:https://forums.developer.apple.com/thread/120790
答案 1 :(得分:0)
一线解决方案。
在navController.popViewController(animated: false)
settingsTableViewController.tableView.removeFromSuperview()
花了我四天的苦苦挣扎:)
答案 2 :(得分:0)
就我而言,问题是在 viewDidDisappear 中隐藏导航栏时。刚刚从 superView 中删除 UITableView - 删除了警告。
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// FIXED TABLEVIEW LAYOUT WARNING ON CLOSING !!!
// FIXED TABLEVIEW LAYOUT WARNING ON CLOSING !!!
// FIXED TABLEVIEW LAYOUT WARNING ON CLOSING !!!
// https://stackoverflow.com/a/58197432/44964
self.aboutTableView?.removeFromSuperview()
self.navigationController?.setNavigationBarHidden(true, animated: false)
}