特定の条件に基づいて異なる結果を表示するピッカーを設定しようとしています。唯一の問題はdataSource
(表示されるピッカーデータ)をviewDidLoad
の外に置く必要があることです。条件が満たされた場合、適切なデータをロードするにはviewDidLoad
が必要です。しかし、私が見たピッカーを扱うコードでは、dataSource
配列がviewDidLoad
の外に配置されているようです(デリゲートのメソッドがその値を使用できるように仮定しています)。私はちょうどをviewDidLoad
に入れて、それが認識できるようにするか、またはviewDidLoad
とそのクラスの外でSwitchまたはIf文を実行する方法があるかどうかを疑問に思っています。Xcode Swift 3 Picker:ViewDidLoadにデータソースを配置する
import UIKit
import Parse
class VC: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var pickerData = [String]()
@IBOutlet weak var namePicker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
namePicker.dataSource = self
namePicker.delegate = self
//here I want the picker to show something different depending on the value of nameOfPerson. I changed the order of the array because the picker selects the first name of the array as the default.
switch nameOfPerson
{
case "Carly":
let pickerData = ["Carly","Jeff","Bob","Anita"]
case "Jeff":
let pickerData = ["Jeff","Carly","Bob","Anita"]
case "Bob":
let pickerData = ["Bob","Carly","Jeff","Anita"]
case "Anita":
let pickerData = ["Anita","Carly","Jeff","Bob"]
}
}
func numberOfComponents(in 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)
{
}
}
質問にいくつかのコードを追加できますか?私は数回それを読んだ、と私はまだあなたが求めているものについて混乱しています。 –