2016-10-25 8 views
0

Was ich versuche, ist der Benutzer scrollen Sie die Picker und wo der Benutzer an der Beschriftung stoppt haben eine Beschreibung des Artikels in der Auswahl. Ich habe meinen gesamten Code bis hierher eingefügt. Ich habe nur ungefähr 2 Monate Swift-Programmierung auf iOS unter meinem Gürtel, also bin ich sicher, dass es viele Konzepte gibt, die ich hier vermisse. Vielen Dank für Ihre Zeit.Swift UIPicker-Eingabe für Beschriftungstext

import UIKit 

class Weapons: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate { 

@IBOutlet weak var WeaponPicker: UIPickerView! 
@IBOutlet weak var WeaponLabel: UILabel! 

var pickerData: [String] = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    WeaponPicker.delegate = self 

    pickerData = ["Great Sword", "Switch Axe", "Hammer", "Lance", "Bow", "Light Bowgun"] 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
func numberOfComponentsInPickerView(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] 
} 
} 
+1

Sie benötigen die 'picker (didSelectRow:) zu implementieren' Delegatmethode -https: //developer.apple.com/reference/uikit/uipickerviewdelegate/1614371-pickerview – Paulw11

Antwort

1

Gerade didSelectRow

Dann implementieren Sie so etwas wie

WeaponLabel.text = pickerData[row] 

EDIT tun können: Hinzufügen einer Erklärung.

Wenn Sie eine Beschreibung auf der Waffe anhand zeigen möchten, können Sie dies tun:

Machen Sie eine Struktur für die Waffe und Beschreibung:

struct weaponObject { 
    var name: String 
    var description: String 
} 

ein Array vom Typ weaponObject deklarieren:

var pickerData = [weaponObject]() 

In viewDidLoad:

let names = ["name1", "name2"] 
let descriptions = ["description1", "description2"] 

for (name, description) in zip(names, descriptions) { 
    pickerData.append(weaponObject(name: name, description: description)) 
} 

In didSelectRow:

WeaponLabel.text = pickerData[row].description 

In titleForRow:

return pickerData[row].name 
+0

Wie würde jemand das Label mit Daten füllen, die dem ausgewählten Objekt im Picker entsprechen? – Dwight

+0

Der einfachste Weg, dies zu tun, ist meiner Meinung nach, eine Struktur zu verwenden. Ich füge die Erklärung meiner Antwort hinzu. – nighttalker

Verwandte Themen