2016-01-11 2 views
0

J'ai un contrôleur tableview avec des cellules dynamiques. Une des cellules a un bouton pour basculer l'édition de la table, de sorte que l'utilisateur est moins susceptible de supprimer quelque chose et doit activement activer l'édition. Quand ils appuient sur le bouton, il est supposé basculer l'édition de la table et le texte du boutonLe texte du bouton ne reste pas modifié lors de la modification de la table

La modification de la table fonctionne, mais le texte du bouton ne clignote que pour revenir au texte d'origine.

@IBAction func deleteTouched(sender: UIButton) { 
    editing = !editing 

    let indexPath = NSIndexPath(forRow: 1, inSection: 0) 
    let cell = tableView.cellForRowAtIndexPath(indexPath) as! FieldInfoCell 

    cell.deleteButton.titleLabel?.text = editing ? "Done" : "Delete Estimates" 
} 

J'ai d'abord essayé référence à l'expéditeur au lieu du bouton dans la cellule

@IBAction func deleteTouched(sender: UIButton) { 
    editing = !editing 

    sender.titleLabel?.text = editing ? "Done" : "Delete Estimates" 
} 

Pourquoi le flash texte à Done puis revenir à Delete Estimates quand activer l'édition?

+1

au lieu de Button.titleLabel .TEXT essayer Button.titleLabel .setTitle (titre:? ForState ... – Johnykutty

+0

@Johnykutty C'était, merci! –

Répondre

1

Au lieu de mettre l'étiquette de titre de bouton texte méthode utilisation de setTitle comme

button.setTitle("<#your title#>", forState: .Normal) 

Parce que le bouton a besoin titre, titlecolor, image, backgroundImage, attributedTitle etc pour chaque état (.Normal, .Selected, .Highlighted etc). Chaque fois que le bouton change d'état, ces propriétés sont actualisées en fonction de l'état, même si vous définissez titleLabel.text ou imageView? .image. Vous pouvez définir la police, les propriétés de la couche pour titleLabel et imageView