我创建了一个 CustomTopTabbarController 来自定义标签栏。
@objcMembers public class CustomTopTabbarController:UITabBarController {
@IBOutlet weak var customBar: UITabBar!
public override func viewDidLoad() {
super.viewDidLoad()
customBar.frame = CGRect(x: 0, y: 0, width: customBar.frame.size.width, height: customBar.frame.size.height)
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
}
在我的主类中,如果我按下 CustomTopBarController,那么 tabBar 会按预期加载。
CustomTopTabbarController *controller = [CustomTopTabbarController controllerStoryboard:UTILITY];
我创建了另一个继承 CustomTopBarController 的类
@objcMembers public class ReviewController:CustomTopTabbarController {
public override func viewDidLoad() {
super.viewDidLoad()
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
}
但是,如果我从同一个主类推送这个 Controller
ReviewController *controller = [ReviewController controllerStoryboard:COURSE];
应用程序崩溃,因为 customBar 变量为零。我收到一个错误:
fatal error :在展开可选值时意外发现 nil
我无法理解为什么 customBar 较早而不是现在初始化。任何指示都会非常有帮助。
最佳答案
我假设您已将新场景添加到 Storyboard 文件中,将其 View Controller 的类更改为 ReviewController 并尝试从 Storyboard 中加载它。
如果你做这样的事情,你必须将你所有的 socket 分别连接到 ReviewController。这些连接不会在场景之间继承。这就是为什么当涉及到界面构建器时, View Controller 的继承不是很有用。
关于ios - fatal error : unexpectedly found nil while unwrapping an Optional value in inheriting class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47052952/