Swift 选择器输入值设置为指定的 url
Posted
技术标签:
【中文标题】Swift 选择器输入值设置为指定的 url【英文标题】:Swift picker input value set to specified url 【发布时间】:2018-03-26 17:36:07 【问题描述】:我对使用 Swift 很陌生。我正在使用 Swift 制作一个 iPhone 应用程序,该应用程序有一个带有标签“Choose State”的视图和一个包含美国所有 50 个州的选择器视图。
我正在尝试将选择器视图中的每个项目分配给与该州的 DMV 网站地址匹配的指定 URL。 (示例:用户选择堪萨斯州,当他们点击“完成/提交”时,他们会被转到另一个视图控制器,该控制器具有加载“https://www.dmv.org/ks-kansas/”的 Webkit 视图。
我一直在搜索,但没有在网上找到任何有用的东西。
【问题讨论】:
【参考方案1】:你应该像这样创建一个字典
var dic = [String:String]()
key代表状态,value代表url,picker的title就是字典的key,点击获取url值
这里还有如何实现选择器:PickerView
【讨论】:
【参考方案2】: 从https://gist.github.com/mshafrir/2646763(states_titlecase.json
版本)以 JSON 格式获取美国各州。
例如在每个字典中为 URL 的最后一个路径组件添加一个新的键值对
"name": "Kansas",
"abbreviation": "KS",
"urlPath" : "ks-kansas/"
将Swift 4的JSONDecoder
的JSON解码成一个struct数组。
name
或abbreviation
。
当用户选择一个值时,用
组成 URLlet url = URL(string: "https://www.dmv.org")!.appendingPathComponent(state.urlPath)
【讨论】:
【参考方案3】:1. 首先,您需要创建一个dataSource
,您可以在UIPickerView
中使用它。对于要在UIPickerView
中显示的所有rows
,它必须包含title
和link
,即
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.接下来,您需要在您的UIViewController
中实现UIPickerViewDataSource
和UIPickerViewDelegate
方法,即
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"]
不要忘记在viewDidLoad()
中设置UIPickerView
的delegate
和dataSource
。
@IBOutlet weak var pickerView: UIPickerView!
override func viewDidLoad()
super.viewDidLoad()
3. 现在,按下UIButton
,您需要在UIPickerView
中获取selected row's
link
并将其发送到包含UIWebView
的AnotherViewController
,即
@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)
4.这是AnotherViewController
的代码,其中包含UIWebView
。
class AnotherViewController: UIViewController
var urlString: String?
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad()
super.viewDidLoad()
if let urlString = self.urlString, let url = URL(string: urlString)
self.webView.loadRequest(URLRequest(url: url))
如果您仍然遇到任何问题,请告诉我。
【讨论】:
以上是关于Swift 选择器输入值设置为指定的 url的主要内容,如果未能解决你的问题,请参考以下文章
vbscript HTML5输入类型日期 - 为日期选择器指定默认值
vbscript HTML5输入类型日期 - 为日期选择器指定默认值
LABVIEW条件结构,添加分支,为啥提示:条件结构,选择器值存在错误类型