Swift - 以编程方式创建视图

时间:2017-02-18 17:35:14

标签: swift

我尝试以编程方式创建表格视图和搜索栏:

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

这样的错误: enter image description here

1 个答案:

答案 0 :(得分:1)

您收到此错误是因为srchBar变量声明为weak

由于weak变量不会增加保留计数,因此在将其添加为子视图之前,它会被取消分配。

这样的东西
let searchBar = UISearchBar()
view.addSubview(searchBar)
self.srchBar = searchBar

应该避免崩溃。