カスタムセルデリゲートを使用して、カスタムセルのボタンが押されたときに関数を呼び出す。カスタムセルクラスのブール変数に応じて、ボタンのイメージを特定のイメージに変更する必要があります。関数から送信されたクラス変数にアクセスしようとするとEXC_BAD_ACCESSエラーが発生する
私は委任なしでこれをどうやって行うことができるのか分かっていますが、ボタンが押されたときにアラートビューを表示したいのですが、カスタムセルクラス内でそれを行うことはできません。
私が実行している問題は、デリゲート関数内でカスタムセルプロパティにアクセスしようとするとEXC_BAD_ACCESSエラーが発生することです。ここに私のカスタムクラスのための私のコードは次のとおりです。
func follow(sender: ProfileHeaderCell){
if(sender.followTapped == false){
sender.followButton.imageView?.image = UIImage(named: "img1")
sender.followTapped = true
}else if(sender.followTapped == true){
let unfollowAlert = UIAlertController(title: "", message:"Would you like to unfollow this User?", preferredStyle: .Alert)
let unfollow = UIAlertAction(title: "Yes, Unfollow this User", style: .Destructive){(ACTION) in
print("unfollow tapped")
sender.followButton.imageView!.image = UIImage(named: "img2")
}
let cancel = UIAlertAction(title: "Cancel", style: .Cancel){(ACTION) in
print("cancel tapped")
}
unfollowAlert.addAction(unfollow)
unfollowAlert.addAction(cancel)
self.presentViewController(unfollowAlert, animated: true, completion: nil)
}
}
悪いアクセスエラーが発生します。
import UIKit
protocol ProfileHeaderCellDelegate: class {
func follow(sender:ProfileHeaderCell)
}
class ProfileHeaderCell: UITableViewCell {
var followTapped = false
var delegate : ProfileHeaderCellDelegate!
@IBOutlet var profilePic: UIImageView!
@IBOutlet var followButton: UIButton!
@IBAction func followButtonTapped(sender: AnyObject) {
delegate?.follow(self)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width/2;
self.profilePic.clipsToBounds = true;
}
@IBOutlet var albumArt: UIImageView!
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
そしてここでは、セルが含まれているテーブルビューコントローラ内からの関数呼び出しは、私はきちんとトンにアクセスするにはどうすればよい
if(sender.followTapped == false){
:デリゲート機能のこの最初の行に彼はカスタムセルオブジェクトから変数を変更できますか?