ios - TableView 单元格选择错误

标签 ios swift pftableviewcell

我有一个 TableView ,用户可以在其中选择 friend 。我的问题是,由于某种原因,当一个单元格被选中时,另一个不相关的单元格也会被选中。谁能帮助我了解发生了什么?

这是我处理选择的代码:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
     let indexPath = tableView.indexPathForSelectedRow
     let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! SpotFriendsCell
     let Friend = currentCell.AddFriendLabel.text
     if self.invitedFriends.containsObject(Friend!) {
         invitedFriends.removeObject(Friend!)
         currentCell.Invited.image = UIImage(named: "unckecked.png")
         tableView.reloadData()
     } else {
         invitedFriends.addObject(Friend!)
         NSUserDefaults.standardUserDefaults().setObject("Yes", forKey: "selectedFriends")
         currentCell.Invited.image = UIImage(named: "checked.png")
         tableView.reloadData()
     }
}

我在单元格的右侧有一个 UIImageView,我用它来跟踪哪些 friend 被选中,哪些没有。如果单元格图像是“unchecked.png”,则添加 friend 并将图像更改为“checked.png”。反之亦然。

最佳答案

不需要这一行,因为参数中已有 indexPath。

让 indexPath = tableView.indexPathForSelectedRow

那么,与其直接玩细胞,不如玩对象。我的猜测是你已经在某处有一个包含 Friend 的列表,你应该从那里选择的索引中获取 Friend 引用。

let selectedFriend = self.allFriends[indexPath.row]

然后您可以保持逻辑简单。

if self.invitedFriends.containsObject(selectedFriend) {
     invitedFriends.removeObject(selectedFriend)
     } else {
         invitedFriends.addObject(selectedFriend)
         NSUserDefaults.standardUserDefaults().setObject("Yes", forKey: "selectedFriends")
     }

    tableView.reloadData()
}

然后您的图像逻辑应该简单地进入您的 cellForRowAtIndexPath 方法。

关于ios - TableView 单元格选择错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925877/

相关文章:

ios - UIWebView 不断尝试加载但没有结果

ios - 在后台线程上调用 XCTestExpectation fulfill 方法是否安全?

swift - EXC_BAD_INSTRUCTION 错误

ios - 快速自定义 NSURLProtocol 错误

arrays - 在 Swift 中查找与条件匹配的数组中最接近的项目?

android - 统一二维 : How to support multi platform and different aspect ratio devices in Unity 2D?

ios - 无法确定表格 View 单元格的宽度

swift - cellForNextPageAtIndexPath 在 swift2 中不可见

ios - 在解析中访问日期列 - Swift IoS 开发