특정 조건에 따라 다른 결과를 표시하는 선택 도구를 설정하려고합니다. 유일한 문제는 dataSource
(표시 할 피커 데이터)을 viewDidLoad
외부에 넣어야한다는 것입니다. 조건이 충족되면 적절한 데이터를로드하려면 viewDidLoad
이 필요합니다. 그러나 내가 본 피커를 다루는 코드에서는 dataSource
배열이 viewDidLoad
외부에 배치 된 것 같습니다 (대리자 메서드가이 값을 사용할 수 있도록 가정합니다). 나는 이것을 dataSource
을 viewDidLoad
에 두어 인식 할 수 있는지 또는 viewDidLoad
외부의 스위치 나 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)
{
}
}
질문에 코드를 추가 할 수 있습니까? 나는 몇 번 읽었고, 나는 아직도 당신이 묻는 것에 대해 혼란스러워합니다. –