我正在写一个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)!)
}
答案 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)!)
}
}