【发布时间】:2019-12-14 20:48:24
【问题描述】:
我有一个 NestedViewController,我试图将它推入 UINavigationController。这会导致崩溃并显示以下堆栈跟踪:
另外:
- 所有这些都发生在主线程上
- 这在 iOS 11 和 12 上都重现
-
animated标志不会改变任何东西 - NestedViewController 以模态方式呈现在应用程序的其他位置,并且成功地呈现,没有崩溃
- NestedViewController 从情节提要中获取其布局
- NestedViewController 的视图以编程方式初始化并与故事板布局相同,但仍会导致崩溃
- 推送一个空的 UIViewController 不会导致崩溃
我做错了什么?
UPD1:我做了这个,但这不会导致崩溃:
let controlla = { () -> UIViewController in
let cont = UIViewController()
cont.view = {
let view = UIView()
view.backgroundColor = UIColor.green
let stack = UIStackView(arrangedSubviews: [ {
let view = UIView()
view.backgroundColor = UIColor.yellow
view.snp.makeConstraints { make in
make.height.equalTo(128)
}
return view
}() ])
view.addSubview(stack)
stack.snp.makeConstraints { make in
make.top.leading.trailing.equalToSuperview()
}
return view
}()
return cont
}()
controller.pushViewController(controlla, animated: true)
UPD2:应用户 Adeel 在评论中的请求,这里是在中止断点命中时控制台中所说的内容:
libc++abi.dylib: terminating with uncaught exception of type NSException
如果它是如此简单并且信息在那里,那么这个问题就不会真正存在,不是吗。
UPD3:所以为了扩展我的调查,我已经卸载了视图控制器内的所有视图,除了根视图。
场景树开始看起来像这样:
然后,当然,我摆脱了所有插座和视图控制器中的代码。
它仍然崩溃。不过,模态呈现仍然可以正常工作。
UPD4:我将 NestedViewController 重命名为其他名称以防万一。没用。
UPD5:在 UPD1 之前,它看起来像这样:
controller.pushViewController(controller, animated: true)
【问题讨论】:
-
您能否分享整个崩溃日志,而不是张贴图片?特别是它说“由于未捕获的异常而终止应用程序”的行(如果存在)。
-
@Adeel 好的,将其发布在问题的 UPD2 部分
标签: ios uiviewcontroller uinavigationcontroller pushviewcontroller