ios - 隐式展开 Optional 值时意外发现 nil 的原因
问题描述
我正在制作一个可展开/折叠的表格视图。
我使用故事板。我还检查了故事板。
建筑没有问题。
但它不适用于模拟器。
import UIKit
class NoticeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var noticeTableView: UITableView!
var imageArr = ["cm_contents_01", "cm_contents_02", "cm_contents_03"]
var nameArr = ["Notice 1", "Notice 2", "Notice 3"]
var selectedIndex = -1
var isCollapce = false
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
noticeTableView.estimatedRowHeight = 3000
noticeTableView.rowHeight = UITableView.automaticDimension
}
...
这里有一个错误。
noticeTableView.estimatedRowHeight = 3000
和故事板连接。
单独做的时候执行得很好,但是和其他项目结合起来,所以出现了错误。
Unexpectedly found nil while implicitly unwrapping an Optional value
请告诉我为什么会出现错误。
解决方案
您正在制作自己的实例NoticeViewController
:
private let noticeController = NoticeViewController()
但是你也在使用 Storyboard!而不是这样做,您需要NoticeViewController
从情节提要中正确获取您的信息,如下所示:
class ViewController: UIViewController, MenuControllerDelegate {
private var sideMenu: SideMenuNavigationController?
private var noticeController: NoticeViewController?
....
override func viewDidLoad() {
super.viewDidLoad()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.noticeController = storyboard.instantiateViewController(withIdentifier: "YourControllerId"
}
然后从那里,您将拥有一个适当的NoticeViewController
. 您遇到的崩溃字面意思是tableView
对象丢失(无)。
推荐阅读
- javascript - 如何使用以下 json 数据创建嵌套数组
- java - SSH 到 docker 容器并执行 Java 程序 (PSVM)
- sql-server-2012 - 将多个数据行连接成一行
- laravel - Select Fields, count() group by on eloquent laravel
- c - 在 MinGW (with MSYS) for Windows 10 中编译 GTK+-2.0 程序
- go - 将自定义 kubernetes 调度程序部署为 pod
- javascript - 用 BS4 抓取用 JS 编写的脚本
- c++ - 如何实现返回受保护结构的私有函数
- c# - ML.Net 重新训练现有模型而不是训练新模型
- google-apps-script - 多封电子邮件选择了 messageMetadata.accessToken