numberOfRowsInSection错误

时间:2018-01-13 22:35:15

标签: swift uitableview variables segue

我得到一个零,我不知道为什么。每次我选择tableViewController1并执行segue时,它都会崩溃并将错误发送给tableViewController2。我设置标识符并将类设置为storyboard中的每个tableViewController。我要做的是将数据从tableViewController1传递到tableViewController2

这来自tableViewController1

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let magazines = MagazineTableViewController()
        magazines.customInit(magazinesindex: indexPath.row, title: topics[indexPath.row])
        self.performSegue(withIdentifier: "company", sender: nil)
        tableView.deselectRow(at: indexPath, animated: true)
    }

这是tableViewController2

let MagazinesData = [//an array containing arrays of magazines]
var magazinesIndex: Int!

override func viewDidLoad() {
    super.viewDidLoad()

}

func customInit(magazinesindex: Int, title: String) {
    self.magazinesIndex = magazinesindex // this is where the error is
    self.title = title
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return MagazinesData[magazinesIndex].count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MagazineTableViewCell
    cell.magazineTitle?.text = MagazinesData[magazinesIndex][indexPath.row]

    return cell
}

}

1 个答案:

答案 0 :(得分:1)

抱歉,您的方法完全错误。

您必须实现MagazineTableViewController并将数据传递给{{},而不是创建 的新prepare(for segue实例,而}等于segue的目标控制器。 1}} segue的属性。

  • destination更改为

    didSelectRowAt
  • 像这样实施override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { self.performSegue(withIdentifier: "company", sender: indexPath) tableView.deselectRow(at: indexPath, animated: true) }

    prepare(for segue