【发布时间】:2021-11-15 23:53:47
【问题描述】:
我有自定义初始化?目标场景上称为 ListCountriesViewController 的方法,该方法在位于 ViewController 中的方法“createListCountriesViewController”内调用,并在连接 ViewController 和 ListCountriesViewController 场景的“连接检查器”处设置故事板 segue 实例化属性。 ListCountriesViewController 包含一个通过情节提要“对象”创建的自定义对象。当 segue 执行时,方法“createListCountriesViewController”被执行了两次,第二次执行以 NSExeption 结束:
线程 1:“自定义实例化
必须是类 pocStoryboardDependencyInjection.CustomObject"
从情节提要场景中删除自定义对象后,问题就解决了。
Storyboard Dependency Injection,包含在 UIKit/iOS 13 中,与场景中设置的对象兼容,例如:对象(自定义类)、附加视图(自定义类)、手势(自定义类)如果是,如何我解决了我的问题?
class ViewController: UIViewController {
@IBSegueAction
func createListCountriesViewController(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> ListCountriesViewController? {
let controller = ListCountriesViewController(coder, userForm: ["field1"])
return controller
}
}
class ListCountriesViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var customObject: CustomObject!
init?(_ coder: NSCoder, userForm: UserForm) {
self.userForm = userForm
super.init(coder: coder)
}
required init?(coder: NSCoder) {
fatalError()
}
}
class CustomObject: NSObject {
}
【问题讨论】:
-
问得很好。您可以大大简化示例(我们在这里不需要表格视图控制器,也不需要知道“真正的”自定义对象会是什么样子),但是您已经完美地证明了这个问题。
标签: ios uikit storyboard