2016-10-17 6 views
0
var amtOfLikes = 0 
@IBAction func whenPressed (sender:UIButton, forEvent event: UIEvent){ 
     likesLbl.text = "Likes \(amtOfLikes+1)" 
     likeBtn.setTitle("- Like", forState: UIControlState.Normal) 

} 

私たちの問題は、LIKEBTNのラベルが "+ Like"の場合、amtOfLikes + 1でLIKEBTNを " - Like"に変更することです。それから、別のIF LIKEBTNは "-Like"であり、この場合は必然的に真であり、変更された後はamtOfLikes-1です。そのシンプルですが、コードを書く方法がわかりません。IFに従って適用関数

@IBAction func whenPressed(sender: UIButton, forEvent event: UIEvent) { 
    self.liked = !self.liked 
} 

、あなたが実際にdidSetコールバックにコードを実装することができます:あなたはちょうどその値を変更することができますクリックハンドラで

var liked: Bool = false 

:あなたのデータの状態を保つことによって

+0

@iDeveloperこの質問 –

答えて

0

スタート:

var liked: Bool = false { 
    didSet { 
     let title = liked ? "- Like" : "+ Like" 
     likeBtn.setTitle(title, forState: UIControlState.Normal) 
    } 
} 

または複数の機能に分割することができます。

var liked: Bool = false { 
    didSet { 
     updateUIState() 
    } 
} 

private func updateUIState() { 
    let title = liked ? "- Like" : "+ Like" 
    likeBtn.setTitle(title, forState: UIControlState.Normal) 
} 

amtOfLikesは同じである必要があります。 UIを直接変更しないでください。モデルを変更し、モデルに基づいてUIを更新します。

+0

に答える方法を知っていますか?これは、テーブルビューのセル内の定期的なアイテムでも機能しますか?ありがとうございました! –

+0

@SelenaRoseGomezこれは特別なものではなく、テーブルビューのセルについて特別なものは何もありません。これは、モデルとUIの一般的な分離です。テーブルでは、あなたのモデルは 'dataSource'です。 'updateUIState'は' tableView.reloadData() 'を呼び出すときです。分かりますか? 'UITableView'はすでにそれを使用しています。 – Sulthan

+0

よろしいですか。ご協力ありがとうございました。 –

関連する問題