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

Updating Button Title w/ Boolean Variable Swift

提问人:Vandal 提问时间:8/3/2023 最后编辑:HangarRashVandal 更新时间:8/4/2023 访问量:26

问:

我正在尝试弄清楚如何以类似于 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)")
        }
    }
}

我遇到的问题是根据用户是否在以下列表中更新按钮标题和操作。如果用户未被关注,则按钮应显示“关注”,如果用户被关注,则应显示“取消关注”。实现这一点的正确方法是什么?

iOS Swift 布尔 值 UIBuint

评论


答:

1赞 Duncan C 8/3/2023 #1

您在插座上有一个 didSet,它试图将按钮标题设置为关注/取消关注。这种逻辑在这里没有意义,因为当您加载视图控制器的视图时,您的出口将被设置一次。

您应该将该代码移动到布尔值上的 didSet。这样,当您更改它的值时,它将运行并相应地更新按钮。followingfollowing

评论

0赞 Vandal 8/3/2023
哇,我简直不敢相信这对我来说只是一个简单的错误。谢谢伙计
0赞 Duncan C 8/4/2023
有时我们都有眼罩,看不到简单的东西。我去过那里很多次。很高兴我能帮上忙。