Как назначить строку с результатом из UIPickerView, использовать строку в качестве URL-адреса WebView

Я пытаюсь создать приложение для iOS, которое позволяет пользователю выбирать штат (США) из UIPickerView, у которого есть строка (URL-адрес веб-сайта), назначенная каждому значению в UIPickerView, а под UIPickerView находится кнопка, которая запускает веб Вид (я знаю, что он устарел), который находится под кнопкой отправки. Похоже на это. Вместо того, чтобы запускать Google в веб-представлении, я хочу запустить веб-сайт, используя URL-адрес, данный State в UIPickerView, который выбирается при нажатии кнопки отправки. Код для моего WebController.swift приведен ниже. Это изображение показывает вывод на iPhone (8). Кто-нибудь знает какие-либо хорошие ссылки для чтения по этому сценарию? Любые идеи тоже были бы потрясающими!

import UIKit

class WebController: UIViewController, UIPickerViewDelegate, 
UIPickerViewDataSource {

    @IBOutlet weak var itemLabel: UILabel!

    @IBOutlet weak var urlLabel: UILabel!

    @IBOutlet weak var webView: UIWebView!

    var states = [
    ["title": "Alabama","link": "https://www.dmv.org/al-alabama/"],
    ["title": "Alaska", "link": ""],
    ["title": "Arizona", "link": ""],
    ["title": "Arkansas", "link": ""],
    ["title": "California", "link": ""],
    ["title": "Colorado", "link": ""],
    ["title": "Connecticut", "link": ""],
    ["title": "Deleware", "link": ""],
    ["title": "Florida", "link": ""],
    ["title": "Georgia", "link": ""],
    ["title": "Hawaii", "link": ""],
    ["title": "Idaho", "link": ""],
    ["title": "Illinois", "link": ""],
    ["title": "Indiana", "link": ""],
    ["title": "Iowa", "link": ""],
    ["title": "Kansas","link": ""],
    ["title": "Kentucky", "link": ""],
    ["title": "Louisiana", "link": ""],
    ["title": "Maine", "link": ""],
    ["title": "Maryland", "link": ""],
    ["title": "Massachusetts", "link": ""],
    ["title": "Michigan", "link": ""],
    ["title": "Minnesota", "link": ""],
    ["title": "Mississippi", "link": ""],
    ["title": "Missouri", "link": ""],
    ["title": "Montana", "link": ""],
    ["title": "Nebraska", "link": ""],
    ["title": "Nevada", "link": ""],
    ["title": "New Hampshire", "link": ""],
    ["title": "New Jersey", "link": ""],
    ["title": "New Mexico", "link": ""],
    ["title": "New York", "link": ""],
    ["title": "North Carolina", "link": ""],
    ["title": "North Dakota", "link": ""],
    ["title": "Ohio", "link": ""],
    ["title": "Oklahoma", "link": ""],
    ["title": "Oregon", "link": ""],
    ["title": "Pennsylvania", "link": ""],
    ["title": "Rhode Island", "link": ""],
    ["title": "South Carolina", "link": ""],
    ["title": "South Dakota", "link": ""],
    ["title": "Tennessee", "link": ""],
    ["title": "Texas", "link": ""],
    ["title": "Utah", "link": ""],
    ["title": "Vermont", "link": ""],
    ["title": "Virginia", "link": ""],
    ["title": "Washington", "link": ""],
    ["title": "West Virginia", "link": ""],
    ["title": "Wisconsin", "link": ""],
    ["title": "Wyoming", "link": ""]
    ]//end states[] array

    override func viewDidLoad() {
        super.viewDidLoad()
        itemLabel.text = states[0]["title"]
        urlLabel.text = states[0]["link"]
    }//end viewDidLoad()


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }//end didReceiveMemoryWarning()


    //How many parts to the wheel do you need?
    func numberOfComponents(in pickerView: UIPickerView) -> Int{
        return 1
    }//end numberOfComponents


    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
        return states.count
    }//end numberOfRowsInComponent


    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{
        return states[row]["title"]
    }//end titleForRow


    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        var itemSelected = states[row]["title"]
        var urlSelected = states[row]["link"]
        itemLabel.text = itemSelected
        urlLabel.text = urlSelected
    }//end didSelectRow


    @IBAction func submitStateBtn(_ sender: UIButton) {
        let url = URL(string: "http://www.google.com")//this line needs to change
        let requestObj = URLRequest(url: url!)
        webView.loadRequest(requestObj)
    }//end submitStateBtn

}//end WebController() class

1 ответ

Вы получите это (объявите var UIPickerView глобально):

var row = 0;
let pickerView :UIPickerView = UIPickerView()

row = pickerView.selectedRow(inComponent: 0)
var urlSelected = states[row]["link"]
Другие вопросы по тегам