在UITableView中动态单元格中的Swift-Access UILabels

时间:2015-01-02 06:55:54

标签: ios xcode uitableview dynamic

我创建了一个原型单元格并将其用作动态UITableView的模板: screenshot

如何访问单元格中的UIButtons和UILabel以设置每个单元格的内容和自定义操作?

2 个答案:

答案 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使用标记获取ButtonLabel(可以在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
    }
}