swift 3 tableview崩溃

时间:2017-02-15 18:33:33

标签: ios swift3 tableview

我现在转移到swift 3,当我创建一个表视图(在viewController中)并连接到一个类时,我遇到了tableViews的问题我得到了这个错误:

-[UITableViewController loadView] instantiated view controller with identifier "UIViewController-gdE-bi-3N4" from storyboard "Main", but didn't get a UITableView

我不知道问题是什么,这让我发疯,这是我的代码:

    import UIKit

class FindFriendVC: UITableViewController {

    @IBOutlet weak var results: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()

        self.results.dataSource = self
        self.results.delegate = self
    }



    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 0
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return 0
    }
}

2 个答案:

答案 0 :(得分:0)

我认为你不需要在Tableview控制器中使用IBOutlet - 如果你使用带有UITableView委托的常规ViewController来控制表,那就是你需要的东西。

编辑:我通常做的是将UITableView添加到构建器中的常规ViewController,右键单击从tableview拖动到ViewController图标(带有白色方块的黄色圆圈)

enter image description here

并连接代表&数据源。然后将UITableViewDelegate和UITableViewDataSource类添加到视图控制器&挂起tableView numberOfSections&您可以使用上面的numberOfRowsInSection,除了将所有代码放在viewController类中,而不是UITAbleViewController类。

希望有所帮助。

答案 1 :(得分:0)

为什么要制作额外的UITableView IBOutlet

每个UITableViewController都有一个带有预连接tableViewDataSource的隐式属性Delegate

删除

@IBOutlet weak var results: UITableView!
...
self.results.dataSource = self
self.results.delegate = self

并使用tableView属性。