在按钮函数 Swift 中访问 indexPath.row
Access indexPath.row in button function Swift
我正在尝试使用按钮删除选定的行。因此我需要 indexPath.row,我将值写入全局变量,但是当我在按钮中访问它时,它 returns 对我来说是零。
var selectedRow = ""
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedEvent = myConversationRows[indexPath.row]
selectedRow = selectedEvent.id!
}
@IBAction func cancelConversation(_ sender: Any) {
print("selected")
print(self.selectedRow)
}
我想当我点击按钮时 didSelectRowAt 没有被触发。我尝试了不同的方法,但 none 有效。
您应该将 selectedRow
声明为 Int
并为其分配默认值 -1
,意思是“未设置”。然后,在 tableView(_:didSelectRowAt:)
中放置此行:
selectedRow = indexPath.row
在 cancelConversation()
中输入:
if selectedRow != -1 {
//...
}
不要使用全局变量!!!
她是解决该问题的简单方法:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "YOURE_CELL_ID", for: indexPath) as? YOUT_CELL_CLASS {
cell.youreButton.tag = indexPath.row
}
}
和:
@IBAction func cancelConversation(_ sender: Any) {
if let btn = sender as? UIButton {
let row = btn.tag
tableView.deleteRows(at: [IndexPath(row: row, section: 0)], with: .bottom)
}
}
为什么不使用 ios 删除滑动手势?
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
print("Deleted")
self.tableView.deleteRows(at: [indexPath], with: .automatic)
}
}
我正在尝试使用按钮删除选定的行。因此我需要 indexPath.row,我将值写入全局变量,但是当我在按钮中访问它时,它 returns 对我来说是零。
var selectedRow = ""
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedEvent = myConversationRows[indexPath.row]
selectedRow = selectedEvent.id!
}
@IBAction func cancelConversation(_ sender: Any) {
print("selected")
print(self.selectedRow)
}
我想当我点击按钮时 didSelectRowAt 没有被触发。我尝试了不同的方法,但 none 有效。
您应该将 selectedRow
声明为 Int
并为其分配默认值 -1
,意思是“未设置”。然后,在 tableView(_:didSelectRowAt:)
中放置此行:
selectedRow = indexPath.row
在 cancelConversation()
中输入:
if selectedRow != -1 {
//...
}
不要使用全局变量!!!
她是解决该问题的简单方法:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "YOURE_CELL_ID", for: indexPath) as? YOUT_CELL_CLASS {
cell.youreButton.tag = indexPath.row
}
}
和:
@IBAction func cancelConversation(_ sender: Any) {
if let btn = sender as? UIButton {
let row = btn.tag
tableView.deleteRows(at: [IndexPath(row: row, section: 0)], with: .bottom)
}
}
为什么不使用 ios 删除滑动手势?
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
print("Deleted")
self.tableView.deleteRows(at: [indexPath], with: .automatic)
}
}