0
私はtableViewを使用して名前のリストを表示しています。ユーザーがセルの1つをタップすると、ポップアップが表示され、詳細が表示されます。私はこの機能を使用して、ユーザーがタップしたセルを確認しています。 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の間の乱数を返すようです(私は現在3つのセルが表示されています)。
どのセルがタップされたかわかりましたか?
ありがとうございます。
編集:
私の結果を偽っていることを理解しました。
私は、この機能を使用して、どのセルが別のビューコントローラ(ConversationViewcontrollerという名前)に選択されているかをプッシュします。しかし、segue関数は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
}
}
}
おかげで再び。
を使用したい場合は、この
を試してみてください。 'indexPath.row'はあなたがタップした行です。 – rmaddy
正しく動作しているようです。 3つのセルがある場合、最初のindexpath.rowは0、2番目は1、次に2になります。 –
デリゲートとdaatasourceの両方をテーブルビューに割り当てることを確認します – Alexander