概述
App 中调用 storyboard 中添加的 tableView , App crash,提示说 tableView 为 nil
备注:
storyboard名称:someViewController.storyboard
storyboard 对应 class:someViewController.swift
someViewController.storyboard 中拖入了一个 tableView,然后在 someViewController.swift 中 control-鼠标左键 添加了对应的 @IBOutlet weak var mainTableView: UITableView!
分析
代码中是直接通过 UIViewController 初始化得到的 VC,然后在 VC 中的 viewDidLoad()
中调用 tableView。此时 storyboard 还未被初始化 ,对应的 tableView 当然为 nil
解决
获取 VC 应该通过 storyboard,不应该直接 let vc = someViewController()
,具体如下
func storyBoardViewController(vcName: String) -> UIViewController {
let storyBoard = UIStoryboard.init(name: "someViewController", bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: vcName)
return vc
}
// 具体调用
let vc = storyBoardViewController(vcName: "vcId")
注意:instantiateViewController(withIdentifier:)
中参数 identifier
为 storyboard 文件中 右边栏-show the identity inspector- identity- storyboard ID 设置的,如果不在 storyboard 文件中设置 对应的 ID,该方法会导致 App crash
网友评论