提问人:Vandal 提问时间:8/3/2023 最后编辑:HangarRashVandal 更新时间:8/4/2023 访问量:26
使用布尔变量 Swift 更新按钮标题
Updating Button Title w/ Boolean Variable Swift
问:
我正在尝试弄清楚如何以类似于 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)")
}
}
}
我遇到的问题是根据用户是否在以下列表中更新按钮标题和操作。如果用户未被关注,则按钮应显示“关注”,如果用户被关注,则应显示“取消关注”。实现这一点的正确方法是什么?
答:
1赞
Duncan C
8/3/2023
#1
您在插座上有一个 didSet,它试图将按钮标题设置为关注/取消关注。这种逻辑在这里没有意义,因为当您加载视图控制器的视图时,您的出口将被设置一次。
您应该将该代码移动到布尔值上的 didSet。这样,当您更改它的值时,它将运行并相应地更新按钮。following
following
评论
0赞
Vandal
8/3/2023
哇,我简直不敢相信这对我来说只是一个简单的错误。谢谢伙计
0赞
Duncan C
8/4/2023
有时我们都有眼罩,看不到简单的东西。我去过那里很多次。很高兴我能帮上忙。
评论