我有十个按钮,我需要知道用户选择了哪个按钮并将该信息保存到用户配置文件中
I have ten buttons, I need to know which button the user has selected and save that information to the users profile
好的,所以我多年来一直试图解决这个问题,但无济于事!!!
我有一个包含 10 个按钮的列表,用户选择了其中的 1 个按钮,我需要将该结果保存到我的用户配置文件中,该配置文件位于不同的视图控制器上。我试图将按钮放在一个数组中,但无法做到。任何帮助将不胜感激,我是 swift 和 xcode 的新手!
我尝试将它们添加到奥特莱斯系列中,但也没有用。
var genreArray = ["rockGenreButton", "bluesGenreButton","funkGenreButton", "indieGenreButton", "metalGenreButton", "popGenreButton", "altGenreButton","electronicGenreButton", "countryGenreButton", "tradGenreButton"]
上面是我创建的数组 我不知道下一步该怎么做 我如何调用选择了数组的 [0] 并保存到 currentUser?
抱歉,如果这是一个非常愚蠢的问题,但我无法在任何地方找到相关答案!
您可以添加按钮标签并查找点击了哪个按钮。
为所有按钮创建插座后(相同功能)
@IBAction func btnClick(sender: AnyObject) {
print(sender.tag.description)
}
只需按住 Ctrl 单击每个按钮即可执行相同的操作
获取按下按钮的标签
如果您需要更多解释,请告诉我。
使用 tag
属性 视图鼓励 lazy/bad 软件设计。它正在视图中存储数据。
不仅如此,任何其他开发人员(包括 6 个月后的您自己)如何才能知道 if(btn.tag == 4)
的实际含义?它隐藏了你正在做的事情的实际目的。
在更好的设计方法中执行此类操作的最简单方法之一是创建单独的函数。每个按钮一个。没有理由让所有按钮都 运行 具有相同的功能。
第一个改进是拥有buttonOnePressed
、buttonTwoPressed
等功能。
@IBAction func buttonOnePressed {
// do something
}
同样,尽管您隐藏了应用的实际含义。
你可以给他们起这样的名字...
@IBAction func rockGenreButtonTapped {
// do something
}
@IBAction func bluesGenreButtonTapped {
// do something
}
好多了。我现在只看函数就知道它什么时候会 运行.
也许更好的方法是根据函数的实际用途来命名函数...
@IBAction func showRockGenreDetails {
// present Rock Genre screen
}
@IBAction func showBluesGenreDetails {
// present Blues Genre screen
}
这次我不仅知道它是一个动作(IBAction)我还通过阅读函数名知道它要做什么。
如评论中所述。您还可以使用 UITableViewController
来显示流派列表。这实际上比我在这里展示的方法好得多,但更难解释。
好的,所以我多年来一直试图解决这个问题,但无济于事!!!
我有一个包含 10 个按钮的列表,用户选择了其中的 1 个按钮,我需要将该结果保存到我的用户配置文件中,该配置文件位于不同的视图控制器上。我试图将按钮放在一个数组中,但无法做到。任何帮助将不胜感激,我是 swift 和 xcode 的新手!
我尝试将它们添加到奥特莱斯系列中,但也没有用。
var genreArray = ["rockGenreButton", "bluesGenreButton","funkGenreButton", "indieGenreButton", "metalGenreButton", "popGenreButton", "altGenreButton","electronicGenreButton", "countryGenreButton", "tradGenreButton"]
上面是我创建的数组 我不知道下一步该怎么做 我如何调用选择了数组的 [0] 并保存到 currentUser?
抱歉,如果这是一个非常愚蠢的问题,但我无法在任何地方找到相关答案!
您可以添加按钮标签并查找点击了哪个按钮。
为所有按钮创建插座后(相同功能)
@IBAction func btnClick(sender: AnyObject) {
print(sender.tag.description)
}
只需按住 Ctrl 单击每个按钮即可执行相同的操作
获取按下按钮的标签
如果您需要更多解释,请告诉我。
使用 tag
属性 视图鼓励 lazy/bad 软件设计。它正在视图中存储数据。
不仅如此,任何其他开发人员(包括 6 个月后的您自己)如何才能知道 if(btn.tag == 4)
的实际含义?它隐藏了你正在做的事情的实际目的。
在更好的设计方法中执行此类操作的最简单方法之一是创建单独的函数。每个按钮一个。没有理由让所有按钮都 运行 具有相同的功能。
第一个改进是拥有buttonOnePressed
、buttonTwoPressed
等功能。
@IBAction func buttonOnePressed {
// do something
}
同样,尽管您隐藏了应用的实际含义。
你可以给他们起这样的名字...
@IBAction func rockGenreButtonTapped {
// do something
}
@IBAction func bluesGenreButtonTapped {
// do something
}
好多了。我现在只看函数就知道它什么时候会 运行.
也许更好的方法是根据函数的实际用途来命名函数...
@IBAction func showRockGenreDetails {
// present Rock Genre screen
}
@IBAction func showBluesGenreDetails {
// present Blues Genre screen
}
这次我不仅知道它是一个动作(IBAction)我还通过阅读函数名知道它要做什么。
如评论中所述。您还可以使用 UITableViewController
来显示流派列表。这实际上比我在这里展示的方法好得多,但更难解释。