Xcode tableview滚动问题

时间:2017-11-23 23:54:17

标签: swift xcode uitableview scroll

我正在写一个IOS应用程序,将创建一个足球(足球)杯。我指定了杯子的名称和球队的数量。然后,当他们点击一个名为“继续”的按钮时,我会显示所有团队的Tableview,并启用多个选择。到目前为止一切都很好。如果团队数量是2或4,它可以正常工作,但如果我指定8或更多,我需要滚动tableView。然后我得到错误 -

teamNames.append((cell?.textLabel?.text)!) - Thread 1 EXC_BREAKPOINT (code=1, subcode=0x10093c624)

我不明白为什么在tableview中滚动名称(默认情况下有7个团队可以查看,所以我需要滚动到第8个)会导致问题。我认为tableviews专门用于滚动。

另外,在控制台区域,我得到:

警告:无法执行支持代码来读取进程中的Objective-C类数据。这可能会降低可用类型信息的质量。

以下是tableview的代码:

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return cupTeam.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "teamCell", for: indexPath)

    cell.textLabel?.text! = cupTeam [indexPath.row].name!
    return cell
}

感谢您对我的tableview问题的任何见解

以下是导致错误的代码所在的循环:

   for indexPath in selectedIndexPaths! {
        let cell = teamTable.cellForRow (at: indexPath)
        teamNames.append((cell?.textLabel?.text)!)
    }

1 个答案:

答案 0 :(得分:0)

selectedIndexPaths将返回所有选定的indexPath,无论它们是否可见。当你打电话

let cell = teamTable.cellForRow (at: indexPath)

如果在屏幕上看不到单元格,它将返回nil。然后你强制打开它来获取值,它崩溃了。一个简单的解决方法是使用if let

for indexPath in selectedIndexPaths! {
    if let cell = teamTable.cellForRow (at: indexPath) {
        teamNames.append((cell.textLabel?.text)!)
    }
}