2016-07-02 1 views
0

私はピッカーをセットアップして、ユーザーに選択をさせてから、URLにつながるボタンをタップしたいと思っています。これは私がこれまで持っているものである: -UIPickerView "didSelectRow"選択でURLにつながるボタン

class PickerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 
    @IBOutlet weak var picker: UIPickerView! 
    @IBOutlet weak var label: UILabel! 

    var url = NSURL(string: "http://www.google.com") 
    var pickerData: [String] = [String]() 
    var pickerSites: [String] = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.picker.delegate = self 
     self.picker.delegate = self 

     pickerData = ["Google", "Facebook"] 
     pickerSites = ["http://www.google.com", "http://www.facebook.com"] 
    } 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return pickerData.count 
    } 

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return pickerData[row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     label.text = pickerSites[row] 
    } 

    siteBtn.addTarget(self, action: "didTapSite", forControlEvents: .TouchUpInside) 

    @IBAction func sitesBtn(sender: AnyObject) { 
     UIApplication.shared().openURL(NSURL(string: "http://www.google.com")!) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

私は、画面上のボタンに「siteBtn」を接続しました。ピッカーとテキストラベルは、ボタンのコードを追加するまでうまくいきました。ボタンコードを正しい場所に置いたかどうかはわかりません。私はピッカー "didSelectRow"と接続するためのボタンが必要で、 "pickerData"リストは "pickerSites"リストと関連付ける必要があることを知っていますが、私は立ち往生しています。

ご協力いただければ幸いです。

答えて

1

これは必要最小限の設定です。

// outlet to the pickerview 
@IBOutlet weak var picker: UIPickerView! 

// datasource 
let pickerData = ["Google", "Facebook"] 
let pickerSites = ["http://www.google.com", "http://www.facebook.com"] 

// pickerview datasource methods 
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerData.count 
} 

// pickerview delegate method 
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return pickerData[row] 
} 

// ibaction for button tap 
@IBAction func goToURLButtonTapped(sender: UIButton) { 
    let selectedSite = pickerSites[picker.selectedRowInComponent(0)] 
    UIApplication.sharedApplication().openURL(NSURL(string: selectedSite)!) 
} 
+0

本当にありがとうございました!私はそのような迅速な応答を得るだ​​ろうと思っていない:)作品は、非常に感謝しています。 – cee

+0

心配はいりません。お役に立てて嬉しいです :) –

関連する問題