2016-10-11 13 views
0

UIButtonを押したときに表示する必要があるピッカービューがあります。 UIButtonのテキストは、選択された行のテキストに変更されます。しかし、どのようにボタンのピッカービューを開始するのですか?Picker View Swift

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

override func viewDidLoad() { 
    super.viewDidLoad() 

    picker.delegate = self 
    picker.dataSource = self 

    } 

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

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    CountryButton.setTitle(CountryData[row], for: .normal) 
} 

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

@IBAction func Country(_ sender: AnyObject) { 

    CountryButton.inputView == picker 

} 

これは

+0

「動作しません」と定義します。何が問題なのですか? – rmaddy

+0

アンボットからピッカービューを開始してそのアンボットのテキストを変更することはできません。私はuitextfeildで行うことができますが、uibuttonではできません。 – ahmed

+0

'UIButton'(' unbutton'のようなものはありません)には 'inputView'がありません。ボタンをタップしたときにピッカービューが表示されるようにするには、そのコードをすべて自分で書き込む必要があります。 – rmaddy

答えて

0

注動作しません:あなたはアクションメソッドを設定すると、アクションを呼び出すのコントロールの種類、UIButtonまたはUIPickerViewまたは任意の送信者を設定してください。 AnyObjectのままにしないでください。

あなたがしようとしていることは完全にわかりません。ボタンを押すときにピッカーのビューを変更する必要があるとし、ボタンのテキストをピッカービューで選択した行に変更する必要があると言います。

ピッカービューで何かを選択したときにボタンのテキストを変更しようとしていますか?または、ボタンを押したときに新しいピッカービューをインスタンス化しようとしていますか?

ピッカービューで行を選択したときにボタンのテキストを変更しようとしている場合は、ピッカービューのonChanged()アクションメソッドを追加し、そのメソッドのボタンのテキストを変更します。

@IBAction func pickerChanged(_ sender: UIPickerView) { 
    button.setTitle("New text", for: UIControlState) 
} 

ボタンが押されると、新たなピッカービューを提示する簡単な方法は、スタック表示でピッカービューを入れて、その非表示プロパティを設定することです。次に、ボタンのonPress()メソッドは、スタックビューでピッカービューを再表示できます。

@IBAction func onPress(_ sender: UIButton) { 
    if weWannaShowthePicker { 
     pickerStack.arrangedSubviews[pickerPosition].isHidden = false 
    } else { // hide it 
     pickerStack.arrangedSubviews[pickerPosition].isHidden = true 
    } 
} 
関連する問題