我很高兴与Swift合作。我正在使用Swift制作iPhone应用程序,该应用程序的视图带有“选择状态”标签和包含美国所有50个州的选择器视图。
我正在尝试将选择器视图中的每个项目分配给与该州的DMV网站地址匹配的指定网址。 (例如:用户选择堪萨斯州,当他们点击“完成/提交”时,他们会被另一个视图控制器拦截,该控制器具有加载“https://www.dmv.org/ks-kansas/”的Webkit视图。
我一直在搜索并且没有找到任何有帮助的内容。
答案 0 :(得分:0)
你应该像这样创建一个字典
var dic = [String:String]()
键代表状态,并且值为url,picker的标题是字典的键,当你点击获取url值
以及如何实施选择器:PickerView
答案 1 :(得分:0)
states_titlecase.json
版本获取美国各州的JSON。在每个字典中为URL的最后一个路径组件添加一个新的键值对,例如
{
"name": "Kansas",
"abbreviation": "KS",
"urlPath" : "ks-kansas/"
}
将带有JSONDecoder
Swift 4的JSON解码为struct数组。
name
或abbreviation
。当用户选择值时,使用
组成URLlet url = URL(string: "https://www.dmv.org")!.appendingPathComponent(state.urlPath)
答案 2 :(得分:0)
1。首先,您需要创建一个可以在dataSource
中使用的UIPickerView
。对于要在title
中显示的所有link
,它必须包含rows
和UIPickerView
,即
let data = [
[
"title": "Kansas",
"link": "https://www.dmv.org/ks-kansas/"
],
[
"title": "Title-1",
"link": "Link-1"
],
[
"title": "Title-2",
"link": "Link-2"
],
[
"title": "Title-3",
"link": "Link-3"
]
]
2。接下来,您需要在UIPickerViewDataSource
中实施UIPickerViewDelegate
和UIViewController
方法,即
func numberOfComponents(in pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return data.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return data[row]["title"]
}
请勿忘记在delegate
中设置dataSource
的{{1}}和UIPickerView
。
viewDidLoad()
3。现在,在@IBOutlet weak var pickerView: UIPickerView!
override func viewDidLoad()
{
super.viewDidLoad()
}
按下,您需要获取UIButton
中的selected row's
link
并将其发送至{{1}其中包含UIPickerView
,即
AnotherViewController
4. 以下是包含UIWebView
的{{1}}代码。
@IBAction func onTapDoneButton(_ sender: UIButton)
{
let anotherController = self.storyboard?.instantiateViewController(withIdentifier: "AnotherViewController") as! AnotherViewController
anotherController.urlString = self.data[self.pickerView.selectedRow(inComponent: 0)]["link"]
self.present(anotherController, animated: true, completion: nil)
}
如果您仍然遇到任何问题,请告诉我。