2016-08-10 4 views
0

У меня есть UIPickerView, отображающий данные из ключей Array.Вызов клавиш словаря с использованием другого массива

var pokemonData = ["Nidoran", "Clefairy", "Spearow", "Ivysaur", "Gengar", "Arcanine", "Gyarados", "Onix", "Pikachu", "Vaporeon"] 

Также у меня есть этот Dictionary, но я хочу назвать каждую клавишу, чтобы она показывает в метке всякий раз, когда я выбираю что-то на селекторе.

var typeData = [ 

    "Nidoran" : "Type: Poison", 
    "Clefairy" : "Type: Normal", 
    "Spearow" : "Type: Normal, Flying", 
    "Ivysaur" : "Type: Grass, Poison", 
    "Gengar" : "Type: Ghost, Poison", 
    "Arcanine" : "Type: Fire", 
    "Gyarados" : "Type: Water, Flying", 
    "Onix" : "Type: Rock, Ground", 
    "Pikachu" : "Type: Electric", 
    "Vaporeon" : "Type: Water" 

] 

Как я могу это сделать? Я использую эту функцию сборщика изменить метки

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

    pokeLabel.text = pokemonData[row] 

} 

Моя вторая метка ...

@IBOutlet weak var typeLabel: UILabel! 
+0

Я бы предложил альтернативный подход: храните 'typeData', но определяйте' pokemonData' как 'typeData.key'. Таким образом, вам нужно только написать pokemon в одном месте, и оба будут обновлены. – Alexander

ответ

2

Просто используйте, что typeData Dictionary, чтобы получить значение для выбранного ключа.

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    pokeLabel.text = pokemonData[row] 
    typeLabel.text = typeData[pokemonData[row]] 
} 
+0

Спасибо, это сработало :) – art3mis

+0

@VeronicaG Проверить последнее редактирование У меня есть только несоответствие метки :) –

+0

@VeronicaG если это ответит на ваш вопрос, пожалуйста, примите ответ – Alexander