Ios 基于按钮按下更新变量
我在Swift的Ios 基于按钮按下更新变量,ios,arrays,swift,switch-statement,Ios,Arrays,Swift,Switch Statement,我在Swift的Swift中有一个小的iOS程序,它列出了餐厅和用户评级。我创建了一个Restaurant类,并将数据存储在数组中 Restaurant(name: "Example", type: "Coffee & Tea Shop", location: "Example Town, NY", phoneNumber: "232-923423", image: "example.jpg", isVisited: false, ratingSave: "") 我为三个按钮对象指定了
Swift
中有一个小的iOS程序,它列出了餐厅和用户评级。我创建了一个Restaurant类,并将数据存储在数组中
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添加到我的类中,我希望该变量更新为三个标记之一(或我将标记分配给的字符串)。我还希望isVisited在应用评级时也更新为true。我该怎么做?不要使用标签
您有三个按钮用于每个不同的分级
因此,创造三个行动。每个按钮一个
@IBAction func dislikeSelected() {
rating = "dislike"
}
@IBAction func goodSelected() {
rating = "good"
}
@IBAction func greatSelected() {
rating = "great"
}
因为您不再使用按钮,所以可以删除输入参数
现在你根本不用担心标签了
保存评级
为了“保存”评级,您需要将该餐厅作为一个酒店通过,然后更新它
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
}
您需要引用当前的
餐厅
实例,即当前将被评级的餐厅,并相应地更改属性评级保存
<代码>isVisited可以是计算属性!ratingSave.isEmpty
。不要在视图上使用标记
属性。@Abizern哈哈哈!是的。我认为评级最好用枚举表示,而不仅仅是传递字符串。@Abizern oh绝对:)只是因为OP的问题才这样做的。我会更新答案的。谢谢你们!“我对编程很陌生,你帮了我很多。”pyogen很乐意帮忙。苹果公司生产的iTunes上有一本电子书。这是免费的,是一个优秀的介绍斯威夫特。你应该读一下。