我尝试以编程方式创建表格视图和搜索栏:
class SearchViewController: UIViewController {
weak var tableView: UITableView!
weak var srchBar: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
self.createUserInterface()
self.createConstraints()
}
func createUserInterface (){
self.tableView = UITableView ()
// tableView.dataSource = self
// tableView.delegate = self
self.view.addSubview(tableView)
self.srchBar = UISearchBar()
self.view.addSubview(self.srchBar)
}
func createConstraints () {
tableView.snp.makeConstraints { (make) in
make.top.equalTo(srchBar.snp.bottom)
make.left.right.bottom.equalTo(self.view)
}
srchBar.snp.makeConstraints { (make) in
make.top.left.right.equalTo(self.view)
}
}
不幸的是,我在控制台中遇到错误:致命错误:在打开可选值时意外发现nil
答案 0 :(得分:1)
您收到此错误是因为srchBar
变量声明为weak
。
由于weak
变量不会增加保留计数,因此在将其添加为子视图之前,它会被取消分配。
像
这样的东西let searchBar = UISearchBar()
view.addSubview(searchBar)
self.srchBar = searchBar
应该避免崩溃。