【发布时间】:2018-03-13 20:44:10
【问题描述】:
我有一组按钮和一个字典,其中keys 是按钮的名称,values 是url,这些按钮是用来打开的。
所有这些都按正确的顺序排序,并显示正确的按钮名称。
我正在努力将正确的 url 传递给 openLink() 函数。
这是我的代码:
@IBOutlet var links: [UIButton]!
let keysAndValues = ["Twitter" : "https://twitter.com/",
"Facebook" : "https://facebook.com/",
"YouTube" : "https://youtube.com/"]
func setButtonName() {
let sortedDict = keysAndValues.sorted(by: <)
let sortedButtons = links.sorted { $0.frame.origin.y < $1.frame.origin.y }
for (index, button) in sortedButtons.enumerated() {
button.setTitle(sortedDict[index].key, for: UIControlState.normal)
}
}
@IBAction func buttonTapped(_ sender: Any) {
let sortedDict = keysAndValues.sorted(by: <)
let sortedButtons = links.sorted { $0.frame.origin.y < $1.frame.origin.y }
for (index, _) in sortedButtons.enumerated() {
openLink(sortedDict[index].value)
}
}
func openLink(_ link: String) {
if let url = URL(string: "\(link)") {
UIApplication.shared.open(url, options: [:])
}
}
如何将正确的value 传递给openLink(_ link: String)?目前,链接以随机顺序运行。
PS:每个按钮都连接到@IBOutlet和@IBAction
【问题讨论】:
-
字典数据没有任何特定的顺序。如果您需要订购,请使用数组。
-
@rmaddy 为什么
keys显示为button标题时正确排序? -
为什么你的
buttonTapped方法循环遍历所有按钮并为所有按钮调用openLink而不仅仅是处理被点击的按钮? -
我正在尝试为每个按钮使用一种方法
标签: arrays swift sorting dictionary url