根据按下按钮更新变量
Update variable based on button press
我在 Swift
中有一个 iOS 小程序,可以列出餐馆和用户评分。我创建了一家餐厅 class,并将数据存储在数组中
Restaurant(name: "Example", type: "Coffee & Tea Shop", location: "Example Town, NY", phoneNumber: "232-923423", image: "example.jpg", isVisited: false, ratingSave: "")
我为三个按钮对象分配了标签
@IBAction func ratingSelected(sender: UIButton) {
switch (sender.tag) {
case 100: rating = "dislike"
case 200: rating = "good"
case 300: rating = "great"
default: break
}
我的问题是,每当用户离开屏幕提供评级时,评级就会消失。我将变量 ratingSave 添加到我的 class,我希望该变量更新为三个标签之一(或我将标签分配给的字符串)。我还希望 isVisited 在应用评级时也更新为 true。我该怎么做?
不要使用标签
每个不同的评级都有三个按钮...
所以创建三个动作。每个按钮一个。
@IBAction func dislikeSelected() {
rating = "dislike"
}
@IBAction func goodSelected() {
rating = "good"
}
@IBAction func greatSelected() {
rating = "great"
}
因为您根本不再使用该按钮,所以您可以删除输入参数。
现在您完全不用担心标签了。
正在保存评分
为了 "save" 您需要将餐厅作为 属性 传递,然后更新它...
var restaurant: Restaurant?
现在介绍您的更新方法...
@IBAction func dislikeSelected() {
guard let selectedRestaurant = restaurant else {return}
selectedRestaurant.rating = "dislike"
}
使用枚举 :D
正如@Abizern 所说,rating
属性 作为枚举会更好,而不仅仅是字符串。
在您的餐厅文件中,您可以将其定义为...
enum Rating {
case None
case Dislike
case Good
case Great
}
并将 rating
属性 的类型从 String
更改为 Rating
。
现在在您的评分功能中,您可以...
@IBAction func dislikeSelected() {
guard let selectedRestaurant = restaurant else {return}
selectedRestaurant.rating = Rating.Dislike
}
我在 Swift
中有一个 iOS 小程序,可以列出餐馆和用户评分。我创建了一家餐厅 class,并将数据存储在数组中
Restaurant(name: "Example", type: "Coffee & Tea Shop", location: "Example Town, NY", phoneNumber: "232-923423", image: "example.jpg", isVisited: false, ratingSave: "")
我为三个按钮对象分配了标签
@IBAction func ratingSelected(sender: UIButton) {
switch (sender.tag) {
case 100: rating = "dislike"
case 200: rating = "good"
case 300: rating = "great"
default: break
}
我的问题是,每当用户离开屏幕提供评级时,评级就会消失。我将变量 ratingSave 添加到我的 class,我希望该变量更新为三个标签之一(或我将标签分配给的字符串)。我还希望 isVisited 在应用评级时也更新为 true。我该怎么做?
不要使用标签
每个不同的评级都有三个按钮...
所以创建三个动作。每个按钮一个。
@IBAction func dislikeSelected() {
rating = "dislike"
}
@IBAction func goodSelected() {
rating = "good"
}
@IBAction func greatSelected() {
rating = "great"
}
因为您根本不再使用该按钮,所以您可以删除输入参数。
现在您完全不用担心标签了。
正在保存评分
为了 "save" 您需要将餐厅作为 属性 传递,然后更新它...
var restaurant: Restaurant?
现在介绍您的更新方法...
@IBAction func dislikeSelected() {
guard let selectedRestaurant = restaurant else {return}
selectedRestaurant.rating = "dislike"
}
使用枚举 :D
正如@Abizern 所说,rating
属性 作为枚举会更好,而不仅仅是字符串。
在您的餐厅文件中,您可以将其定义为...
enum Rating {
case None
case Dislike
case Good
case Great
}
并将 rating
属性 的类型从 String
更改为 Rating
。
现在在您的评分功能中,您可以...
@IBAction func dislikeSelected() {
guard let selectedRestaurant = restaurant else {return}
selectedRestaurant.rating = Rating.Dislike
}