2015-01-02 2 views
3

Я создал ячейку прототипа и использовать его в качестве шаблона для динамического UITableView: screenshotUILabels Swift-доступ в динамических ячейках в UITableView

Как получить доступ к UIButtons и UILabels в клетке, чтобы установить содержание и пользовательские действия для каждой ячейки?

ответ

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 
    } 
} 
2

Сначала вы должны объявить подкласс 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; 
} 

Добавить настраиваемое действие для каждой ячейки, которое вы можете, переопределив метод tableView (tableView :, didSelectRowAtIndexPath indexPath :) UITableViewDelegate:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    switch(indexPath.row) { 
    case 1: 
     action1() 
    case 2: 
     action2() 
     //and so on 
    } 
} 
Смежные вопросы