ios 使用布尔变量Swift更新按钮标题

ua4mk5z4  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(93)

我试图弄清楚如何以类似于Instagram的方式正确配置跟随/取消跟随按钮。
首先,我为按钮创建了一个IBOutlet,并使用didSet定义其属性:

@IBOutlet weak var followButtonOutlet: UIButton! {
    didSet {
        if !following {
            followButtonOutlet.setTitle("Follow", for: .normal)
            followButtonOutlet.backgroundColor = Colors.indexedPrimary
        } else {
            followButtonOutlet.setTitle("Unfollow", for: .normal)
            followButtonOutlet.backgroundColor = Colors.indexedPrimary
        }
    }
}

字符串
与按钮沿着是一个名为following的布尔值,如果用户在下面的列表中,则返回true,否则返回false:

unc checkIfUserIsFollowing(){
    guard let currentUID = Auth.auth().currentUser?.uid, let userID = user.uid else { return }

    COLLECTION_USERS.document(currentUID).collection("following").document(userID).getDocument { snapshot, err in
        
        if let snapshot = snapshot {
            if snapshot.exists == true {
                self.following = true
            } else {
                self.following = false
            }
        } else {
            print("Error retrieving document: \(err)")
        }
    }
}


我遇到的问题是**根据用户是否在下面的列表中获取按钮标题和操作更新。**如果用户没有被关注,按钮应该说“关注”,如果用户被关注,按钮应该说“取消关注”。什么是正确的方式来实现这一点?

wz8daaqr

wz8daaqr1#

你在插座上有一个didSet,它试图将你的按钮标题设置为跟随/取消跟随。这种逻辑在这里没有意义,因为当你加载视图控制器的视图时,你的出口将被设置一次。
您应该将该代码移动到following bool上的didSet中。这样,当您更改following的值时,它将运行并相应地更新按钮。

相关问题