我创建了一个原型单元格并将其用作动态UITableView的模板:
如何访问单元格中的UIButtons和UILabel以设置每个单元格的内容和自定义操作?
答案 0 :(得分:3)
首先,你需要用你的出口声明UITableViewCell的子类并将它们与你的原型连接
class MyCustomCell: UITableViewCell {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
}
然后你的tableView(tableView:cellForRowAtIndexPath indexPath :)方法将如下所示:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cell id")
if (cell == nil) {
cell = MyCustomCell()
}
(cell as MyCustomCell).label1.text = "Some text"
(cell as MyCustomCell).label2.text = "Some text"
(cell as MyCustomCell).label3.text = "Some text"
return cell;
}
通过覆盖UITableViewDelegate的tableView(tableView:,didSelectRowAtIndexPath indexPath :)方法,为每个单元格添加自定义操作:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
switch(indexPath.row) {
case 1:
action1()
case 2:
action2()
//and so on
}
}
答案 1 :(得分:0)
在cellForRowAtIndexPath
使用标记获取Button
和Label
(可以在Storyboard
中提供)。
// 1 is tag value, which is set for UILabel in Storyboard
var label = tableCell.viewWithTag(1) as? UILabel
label?.text = "Your Title"
// 2 is tag value, which is set for UIButton in Storyboard
var button = tableCell.viewWithTag(2) as? UIButton
// Now Set Dynamic Tag
button?.tag = indexPath.row
button?.addTarget(self, action: "btnClicked:", forControlEvents: UIControlEvents.TouchUpInside)
并在Button Action
取决于标记值,执行您的操作。
func expandButtonClicked(sender: UIButton) {
var btnTag = sender.tag
if(btnTag == 1) {
// Action 1
}
else if(btnTag == 2) {
// Action 2
}
}