2015-09-12 5 views
0

У меня есть программа, которая добавляет новую ячейку для каждой новой песни, которая воспроизводится. Например, если песня воспроизводится, программа отобразит эту информацию в ячейке, но как только песня изменит информацию новой песни, она будет добавлена ​​в новую ячейку, но я также хочу, чтобы кнопка добавлялась для каждой новой ячейки. Как мне это сделать? ниже - это то, что я пробовал до сих пор.Как добавить кнопку в каждую ячейку uitableview?

// ... 

    playButton = UIButton() 
    let imageret = "playbutton" 
    playButton.setImage(UIImage(named: imageret), forState: .Normal) 

} 

func play(sender: UIButton){ 

} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell: UITableViewCell = self.table.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell 
    var play: Play 

    playButton.tag = indexPath.row 
    playButton.addTarget(self,action: "play:", forControlEvents: UIControlEvents.TouchUpInside) 
    table.addSubview(playButton) 

    // ... 
+0

добавив его программно? –

+0

Да, я хотел бы добавить его программно – blee

+1

Лучшим вариантом было бы добавить кнопку в ячейку прототипа в вашей раскадровке. Затем вы можете подключить действие 'play:' кнопки к подклассу вашей ячейки. –

ответ

1

вы можете попробовать это:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {    

    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell 

    let button : UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
    button.frame = CGRectMake(40, 60, 100, 24) 
    button.addTarget(self, action: "playButton:", forControlEvents: UIControlEvents.TouchUpInside) 
    button.setTitle("Click Me !", forState: UIControlState.Normal) 

    //Remove all subviews so the button isn't added twice when reusing the cell. 
    for view: UIView in cell.contentView.subviews as! Array<UIView> { 
     view.removeFromSuperview() 
    } 
    cell.contentView.addSubview(button) 

    return cell; 
} 
+1

У этого кода несколько проблем. По мере повторного использования ячеек этот код продолжает добавлять в ячейку все больше кнопок. Убедитесь, что в ячейку добавлена ​​только одна кнопка. И кнопка (или любое подзаголовок) всегда должна быть добавлена ​​в содержимое contentView, а не непосредственно в ячейку. – rmaddy

+0

@ lucaslt89 Это плохая идея, чтобы вслепую удалить все подобные подпрограммы. Почему бы не просто повторно использовать любую существующую кнопку, а не уничтожить содержимое ячейки? BTW - Это не подходящее редактирование для чужого ответа. – rmaddy

+1

Пользователь попросил программно добавить кнопку, поэтому я предполагаю, что кнопка является единственным компонентом в ячейке. Я не хотел создавать новый ответ, поскольку это было правильно, просто с некоторыми проблемами, которые я исправил с помощью редактирования. Издание проходит через процесс обзора, поэтому в этом случае было бы неплохо отредактировать почти правильный ответ – lucaslt89

Смежные вопросы