2016-10-08 11 views
0

Я делаю приложение, в котором пользователь имеет возможность использовать два UIPickers в одном контроллере представления. Как это может быть сделано. Я хочу, чтобы один собеседник показывал названия пляжей, а другой показывал животных, живущих на пляже.Два сборщика в том же UIViewcontroller

Спасибо за вашу помощь

+0

Какое беспокойство имеет отношение к использованию двух? Вы боретесь с тем, как обрабатывать дифференциацию сборщиков в рамках методов делегата? –

+0

Да, я не знаю, как вы можете установить массив для отдельных сборщиков @IanMoses – Sam

+0

. Методы делегата включают в себя параметр UIPickerView. Вы можете назначить каждому тегу UIPicker значение тега, а в каждом методе делегата проверить значение тега. Что-то вроде: switch pickerView.tag {case pickerOneTagValue: // Делать что-то здесь case pickerTwoTagValue: // Сделать что-то еще здесь по умолчанию: break} –

ответ

0

Вот краткое руководство как это сделать:

1.Initialize сборщиков и наборы данных Picker в классе:

var pickerView1 = UIPickerView() 
var pickerView2 = UIPickerView() 

var pickerView1Data: [String] = ["Waikiki", "Long Beach", ...] 
var pickerView2Data: [String] = ["Crab", "Seal", ...] 

2.Set делегаты, данные источников и тегов (в viewDidLoad).

pickerView1.dataSource = self 
pickerView1.delegate = self 
pickerView1.tag = 1 

pickerView2.dataSource = self 
pickerView2.delegate = self 
pickerView2.tag = 2 

3.Set количество строк

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    var returnIndex: Int = 0 

    if pickerView.tag == 1 { 
     returnIndex = pickerView1Data.count 
    } else if pickerView.tag == 2 { 
     returnIndex = pickerView2Data.count 
    } 

    return returnIndex 
} 

4.Return данные для каждой строки выбора

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    var returnRow: String! 

    if pickerView.tag == 1 { 
     returnRow = pickerView1Data[row] 
    } else if pickerView.tag == 2 { 
     returnRow = pickerView2Data[row] 
    } 

    return returnRow 
} 

5.Capture pickerView

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    // This method is triggered whenever the user makes a change to the picker selection. 

    if pickerView.tag == 1 { 

     beachTextField.text = pickerView1Data[row] 

    } else if pickerView.tag == 2 { 

     animalTextField.text = pickerView2Data[row] 

    } 

} 

Конечно, это находится на вершине всего остального, что вы h ave, чтобы сделать, чтобы создать представления сборщика, но это должно быть все, что нужно позаботиться о двух вариантах выбора.