2017-08-12 2 views
0

J'ai un bouton qui quand il est pressé il compte combien de fois il est pressé. Le problème est que dès que l'application quitte les données sont perdues, en outre, l'utilisateur n'a aucun moyen de voir combien de clics le bouton a.Comment imprimer un bouton de décompte sur une étiquette et l'enregistrer pour toujours? Swift 3

J'ai une étiquette sur ma Collection View Cell que je veux contenir le nombre de taps que le bouton a reçu (bouton est également sur ma collection View Cell). Je dois m'assurer que chaque cellule ne charge pas le nombre de votes de ses cellules dans le même compteur de boutons. J'utilise Firebase sur mon application, au cas où je devrais stocker les données dans Firebase et les rappeler.

Ci-dessous ma collection Voir Cellule avec le bouton et l'étiquette à l'intérieur.

import UIKit 
import Firebase 


class PostCell: UICollectionViewCell { 

    @IBOutlet weak var postImage: UIImageView! 
    @IBOutlet weak var authorLabel: UILabel! 
    @IBOutlet weak var likeLabel: UILabel! 


    @IBOutlet weak var likeBtn: UIButton! 
    @IBOutlet weak var unlikeBtn: UIButton! 


    @IBOutlet weak var thisLabel: UILabel! 
    @IBOutlet weak var thisButton: UIButton! 
    @IBOutlet weak var thatLabel: UILabel! 
    @IBOutlet weak var thatButton: UIButton! 

    var counterThis = 0 

    var counterThat = 0 
    @IBAction func thisButtonTapped(_ sender: Any) { 
     counterThis += 1 

    } 

    @IBAction func thatButtonTapped(_ sender: Any) { 
     counterThat += 1 

    } 

    @IBOutlet weak var thisVoteCounter: UILabel! 
    @IBOutlet weak var thatVoteCounter: UILabel! 

    // @IBOutlet weak var thisVoteLabel: UILabel! 
    // @IBOutlet weak var thatVoteLabel: UILabel! 

    var postID: String! 
    var thisString = String() 
    var thatString = String() 






    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.thisLabel.sizeToFit() 
     self.thisLabel.layoutIfNeeded() 
     self.thatLabel.sizeToFit() 
     self.thatLabel.layoutIfNeeded() 



    } 
} 

je besoin d'un moyen d'afficher la fonction de comptage, assurez-vous que les données sauvegarde et assurez-vous que tous les clics de bouton Afficher la collection Cells ne vont pas dans le même bouton de comptage.

Toute aide est appréciée !!

MISE À JOUR:

import UIKit 
 
import Firebase 
 

 

 
class PostCell: UICollectionViewCell { 
 
    
 
    @IBOutlet weak var postImage: UIImageView! 
 
    @IBOutlet weak var authorLabel: UILabel! 
 
    @IBOutlet weak var likeLabel: UILabel! 
 
    
 
    
 
    @IBOutlet weak var likeBtn: UIButton! 
 
    @IBOutlet weak var unlikeBtn: UIButton! 
 
    
 
    
 
    @IBOutlet weak var thisLabel: UILabel! 
 
    @IBOutlet weak var thisButton: UIButton! 
 
    @IBOutlet weak var thatLabel: UILabel! 
 
    @IBOutlet weak var thatButton: UIButton! 
 
    
 
    
 

 
    
 
    var counterThis = 0 
 
    
 
    var counterThat = 0 
 
    
 
    var counterThisString = Int() 
 
    
 
    var counterThatString = Int() 
 
    
 
    
 
    cell.thisButtonCounter.addTarget(self, action: #selector(self.thisButtonTapped), for: .touchUpInside) 
 

 
    func thisButtonTapped(_ sender: UIButton) { 
 
     let point : CGPoint = (sender as AnyObject).convert(CGPoint.zero, to: postCell) 
 
     let indexPath = postCell!.indexPathForItem(at: point) 
 
     let cell = postCell!.cellForItem(at: indexPath!) as! PostCell 
 
     counterThis += 1 
 
     cell.thisLabel.text = "\(counterThis)" 
 
    } 
 
    
 
    
 
    
 
    /* @IBAction func thisButtonTapped(_ sender: Any) { 
 
     counterThis += 1 
 
     print(counterThis) 
 
     
 
     counterThis.int = counterThatString 
 
     
 
     return 
 
    } 
 
    
 
    @IBAction func thatButtonTapped(_ sender: Any) { 
 
     counterThat += 1 
 
     
 
     print(counterThat) 
 
     
 
     counterThat.int = counterThatString 
 
     
 
     return 
 
    } 
 
*/ 
 
    
 
    @IBOutlet weak var thisVoteCounter: UILabel! 
 
    @IBOutlet weak var thatVoteCounter: UILabel! 
 
    
 
    // @IBOutlet weak var thisVoteLabel: UILabel! 
 
    // @IBOutlet weak var thatVoteLabel: UILabel! 
 
    
 
    var postID: String! 
 
    var thisString = String() 
 
    var thatString = String() 
 
    
 
    
 
    
 
    
 
    
 
    
 
    override func awakeFromNib() { 
 
     super.awakeFromNib() 
 
     self.thisLabel.sizeToFit() 
 
     self.thisLabel.layoutIfNeeded() 
 
     self.thatLabel.sizeToFit() 
 
     self.thatLabel.layoutIfNeeded() 
 
     
 
     
 
    
 
    }
Ceci est mon code maintenant et je ne suis toujours pas comprendre le problème. Pouvez-vous s'il vous plaît écrire ce que je dois mettre à mon code de travail?

Merci beaucoup!

+0

Avez-vous besoin d'enregistrer des données ou simplement quelque peu? –

+0

Maintenant, j'essaie juste de faire en sorte que ma fonction thisButtonTapped imprime les comptes qu'elle contient dans une étiquette sur la même cellule. Je n'ai pas besoin de l'enregistrer encore – priM

+0

vous pouvez facilement faire cela par cellForItem déléguer la méthode –

Répondre

0

Je sais tout ce que je suis annonce n'est pas la réponse relative à la question, mais après discuter avec @priM il me demande de l'aide à une autre requête

vous devez ajouter la cible dans cellForItemAt

cell.btnCounter.addTarget(self, action: #selector(self.buttonClicked), for: .touchUpInside) 

Vous pouvez attraper l'action en suivant et faire en sorte que vous deviez modifier le texte de l'étiquette dans la méthode d'action.

func buttonClicked(_ sender: UIButton) { 
     let point : CGPoint = (sender as AnyObject).convert(CGPoint.zero, to: collectionView) 
     let indexPath = collectionView!.indexPathForItem(at: point) 
     let cell = collectionView!.cellForItem(at: indexPath!) as! ImageCollectionViewCell 
     counterThis += 1 
     cell.lblCellItemName.text = "\(counterThis)" 
    } 

Hope this vous aider

+0

s'il vous plaît lire modifier – priM

+0

Je suis désolé, je ne comprends toujours pas – priM

+0

ce que vous n'obtenez pas? –