Swift选择器输入值设置为指定的URL

时间:2018-03-26 17:36:08

标签: swift uipickerview xcode9.2

我很高兴与Swift合作。我正在使用Swift制作iPhone应用程序,该应用程序的视图带有“选择状态”标签和包含美国所有50个州的选择器视图。

我正在尝试将选择器视图中的每个项目分配给与该州的DMV网站地址匹配的指定网址。 (例如:用户选择堪萨斯州,当他们点击“完成/提交”时,他们会被另一个视图控制器拦截,该控制器具有加载“https://www.dmv.org/ks-kansas/”的Webkit视图。

我一直在搜索并且没有找到任何有帮助的内容。

3 个答案:

答案 0 :(得分:0)

你应该像这样创建一个字典

 var dic = [String:String]()

键代表状态,并且值为url,picker的标题是字典的键,当你点击获取url值

以及如何实施选择器:PickerView

答案 1 :(得分:0)

  • https://gist.github.com/mshafrir/2646763 states_titlecase.json版本获取美国各州的JSON。
  • 在每个字典中为URL的最后一个路径组件添加一个新的键值对,例如

    {
       "name": "Kansas",
       "abbreviation": "KS",
       "urlPath" : "ks-kansas/"
    }
    
  • 将带有JSONDecoder Swift 4的JSON解码为struct数组。

  • 使用数组作为选择器视图的数据源。
  • 向用户显示nameabbreviation
  • 当用户选择值时,使用

    组成URL
    let url = URL(string: "https://www.dmv.org")!.appendingPathComponent(state.urlPath)
    

答案 2 :(得分:0)

1。首先,您需要创建一个可以在dataSource中使用的UIPickerView。对于要在title中显示的所有link,它必须包含rowsUIPickerView,即

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中实施UIPickerViewDelegateUIViewController方法,即

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)
}

如果您仍然遇到任何问题,请告诉我。