UITableViewDelegate didSelectRowAt 根据Row条件执行
UITableViewDelegate didSelectRowAt Conditionally Execute based on Row
我对能够根据用户选择的行有条件地执行代码很感兴趣。有没有办法将标识符与 cellForRowAt 中的每一行(单元格)相关联,以帮助区分选择哪一行用于 DidSelectRowAt 委托?
是的。您使用 DidSelectRowAt
方法是正确的。如果你有一个带有 table 的视图控制器,视图控制器将必须采用两个标准委托:UITableViewDataSource
、UITableViewDelegate
。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var table: UITableView!
let message:[String] = ["Hello", "World", "How", "Are", "You"]
/* Table with five rows */
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
/*Have a simple table with cells being the words in the message */
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = message[indexPath.row]
return cell
}
/*Optional method to determine which row was pressed*/
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
print("I'm row number "+String(indexPath.row))
}
/*set the table's delegate and datasource to the view controller*/
override func viewDidLoad() {
super.viewDidLoad()
self.table.delegate = self
self.table.dataSource = self
}
}
这将输出:
I'm row number 1
回想一下,索引从零开始。
我对能够根据用户选择的行有条件地执行代码很感兴趣。有没有办法将标识符与 cellForRowAt 中的每一行(单元格)相关联,以帮助区分选择哪一行用于 DidSelectRowAt 委托?
是的。您使用 DidSelectRowAt
方法是正确的。如果你有一个带有 table 的视图控制器,视图控制器将必须采用两个标准委托:UITableViewDataSource
、UITableViewDelegate
。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var table: UITableView!
let message:[String] = ["Hello", "World", "How", "Are", "You"]
/* Table with five rows */
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
/*Have a simple table with cells being the words in the message */
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = message[indexPath.row]
return cell
}
/*Optional method to determine which row was pressed*/
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
print("I'm row number "+String(indexPath.row))
}
/*set the table's delegate and datasource to the view controller*/
override func viewDidLoad() {
super.viewDidLoad()
self.table.delegate = self
self.table.dataSource = self
}
}
这将输出:
I'm row number 1
回想一下,索引从零开始。