2017-02-07 15 views
0

Привет, ребята, я пытаюсь сделать некоторые Util, что мне нужно как Pokedex ккIOS - как установить данные сборщика, когда я использую UIView с UIViewController

но у меня есть некоторые проблемы. Я делаю сборщик в отдельном виде, и я вызываю это представление в виде табуляции и использую его.

но я не знаю, как установить данные. Если я сделаю сборщик в uiviewcontroller, я могу установить данные в didload? способ но в uiview нет сделал load способ, который я могу установить.

это мой код

SelectPoke.swift

class SelectPoke: UIView , UIPickerViewDelegate , UIPickerViewDataSource{ 
@IBOutlet var textField: UITextField! 

var data = ["1","2","3"] 
var picker = UIPickerView() 

public func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 
    return data.count 
} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    textField.text = data[row] 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return data[row] 
} 

func h(){ 
    picker.delegate = self 
    picker.dataSource = self 
} 

override func awakeFromNib() { 
    h() 
} 

class func instanceFromNib() -> UIView { 
    return UINib(nibName: "SelectPoke", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView 
} 

}

Tab1ViewController.swift

class Tab1ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 


    let sideView = SelectPoke.instanceFromNib() 
    sideView.frame = self.view.frame 

    self.view.addSubview(sideView) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

plz help me. мой Pokemon ждет ..

+0

Действительно ли предполагается, что вы используете 'SelectPoke' как подкласс UIView? Как правило, вы должны реализовать делегат и источник данных в 'Tab1ViewController'. –

+0

проверьте, запускается метод initWithCoder при загрузке представления. –

ответ

0

Как правило, вы бы не подкласс UIPickerView, но создать представление в раскадровки (или XIB-файл) и подключения делегата и данных источника с Tab1ViewController.

Тем не менее, в этом коде мы просто создадим новый UIPickerView в viewDidLoad, чтобы сохранить код похож на оригинальный вопрос

Замечание: На данный момент у меня нет Xcode работает, так что может быть небольшой syntactial ошибки в этом примере кода

class Tab1ViewController: UIViewController, UIPickerViewDelegate , UIPickerViewDataSource { 

    var data = ["1","2","3"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let sideView = UIPickerView() 
     sideView.frame = self.view.frame 

     self.view.addSubview(sideView) 
     sideView.delegate = self 
     sideView.dataSource = self 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    public func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 
     return data.count 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     textField.text = data[row] 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return data[row] 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^