我有一个按钮数组和一个字典,其中 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: [:])
}
}
如何将正确的值
传递给openLink(_ link: String)
?目前链接以随机顺序工作。
PS:每个按钮都连接到@IBOutlet
和@IBAction
最佳答案
您的问题是,对于每个按钮,您都会为每个按钮调用 openLink
。显然,您只想调用 openLink
以获取与点击的按钮关联的一个 URL。
重写你的 buttonTapped
方法如下:
@IBAction func buttonTapped(_ sender: UIButton) {
let title = sender.title(for: .normal)
if let url = keysAndValues[title] {
openLink(url)
}
}
这会获取点击按钮的标题,并将其用作检索相应 URL 的键。
关于arrays - 按钮以正确的顺序访问字典数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49265548/