我试图弄清楚如何以类似于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条答案
按热度按时间wz8daaqr1#
你在插座上有一个didSet,它试图将你的按钮标题设置为跟随/取消跟随。这种逻辑在这里没有意义,因为当你加载视图控制器的视图时,你的出口将被设置一次。
您应该将该代码移动到
following
bool上的didSet中。这样,当您更改following
的值时,它将运行并相应地更新按钮。