我感兴趣的是能够根据用户选择的行有条件地执行代码。有没有办法将标识符与cellForRowAt中的每一行(单元格)相关联,以帮助区分选择在DidSelectRowAt委托中使用哪一行?
答案 0 :(得分:1)
是。您使用Object.assign(this.portfolio_value, values);
Object.assign(this.portfolio_labels, labels);
方法是正确的。如果您有一个包含该表的视图控制器,则视图控制器必须采用两个标准委托:DidSelectRowAt
,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
}
}
回想一下,索引从零开始。