gpt4 book ai didi

ios - 尝试访问从函数发送的类变量时出现 EXC_BAD_ACCESS 错误

转载 作者:行者123 更新时间:2023-11-28 08:35:12 25 4
gpt4 key购买 nike

当按下自定义单元格中的按钮时,我正在使用自定义单元格委托(delegate)来调用函数。然后我想根据自定义单元格类的 bool 变量将按钮的图像更改为特定图像。

我知道如何在没有委托(delegate)的情况下执行此操作,但是我还想在按下按钮时显示警报 View ,而我无法在自定义单元格类中执行此操作。

我遇到的问题是在尝试访问委托(delegate)函数中的自定义单元格属性时出现 EXC_BAD_ACCESS 错误。这是我的自定义类的代码:

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
}

下面是包含单元格的 TableView Controller 中的函数调用:

 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)
}
}

错误访问错误发生在委托(delegate)函数的第一行:

if(sender.followTapped == false){

如何从自定义单元格对象正确访问变量?

最佳答案

我意识到我的错误出在我的 cellForRowAtIndexPath 方法中。问题是,除了在点击按钮时调用委托(delegate)方法(通过我的自定义单元格类中的 IBAction)之外,我还在 cellForRowAtIndexPath 方法中有以下行:

cell1.followButton.addTarget(self, action: "follow:", forControlEvents: .TouchUpInside)

我想错误访问的发生是因为以某种方式调用了相同的“follow”方法,但是是从主视图 Controller 内部调用的,这意味着发送方单元格从未作为参数传递。

关于ios - 尝试访问从函数发送的类变量时出现 EXC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com