2017-10-07 88 views
0

我正在使用tableView来显示名称列表。当用户点击其中一个单元格时,会弹出一个窗口,显示更多细节。我正在使用此功能来检查用户点击了哪个单元格。如何知道使用Swift在tableView中点击哪个单元格

var selectedCell: Int? 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("This cell from the chat list was selected: \(indexPath.row)") 
    selectedCell = indexPath.row 
} 

不幸的是,它似乎给予0和2之间的随机数(我目前有三个显示的单元格)。

你知道我怎么知道哪个单元被点击?

预先感谢您。

编辑:

我明白什么是伪造我的结果。

我正在使用此功能将选定的单元格推送到另一个视图控制器(名为ConversationViewcontroller)。但是,segue fonction在tableView函数之前被调用,所以segue推动之前选择的单元格。我怎么能纠正这个?

这里是我的赛格瑞代码:再次

//SEGUE: Cell was selected: pass chatID 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "OpenChat" { 
      if let toViewController = segue.destination as? ConversationViewController { 
       toViewController.chatIdentifier = selectedCell 
      } 
     } 
    } 

感谢。

+0

您发布的代码是正确的代码试试这个

var selectedCell: IndexPath override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("This cell from the chat list was selected: \(indexPath.row)") selectedCell = indexPath } 

。 'indexPath.row'将成为您点击的行。 – rmaddy

+0

它似乎工作正常。如果您有三个单元格,则第一个indexpath.row将为0,第二个为1,然后为2. –

+0

确认将委托和数据源分配给您的表视图 – Alexander

回答

1

,如果你想使用IndexPath

self.selectedCell?.row 
相关问题