2016-11-25 2 views
1

Я гугле, как найти список стран и пытается внедрить в PickerView, но я застрял в этой точке, где я пытаюсь сделать countries.count это дает мне ошибку говоря:список стран, в UIPickerView стрижа 3

не может преобразовать возвращаемое выражение типа 'int', чтобы вернуть тип 'string' любые предложения?

import UIKit 

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{ 
    @IBOutlet weak var pickerValue: UIPickerView! 

    let countries = NSLocale.isoCountryCodes.map { (code:String) -> String in 
     let id = NSLocale.localeIdentifier(fromComponents: [NSLocale.Key.countryCode.rawValue: code]) 
     return NSLocale(localeIdentifier: "en_US").displayName(forKey: NSLocale.Key.identifier, value: id) ?? "Country not found for code: \(code)" 
    } 

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

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return countries.count 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

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

ответ

2

Вы должны вернуться рассчитывать массив в методе numberOfRowsInComponent и в titleForRow вам нужно вернуть массив объектов, показать, что он будет отображаться в палитре.

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

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return countries[row] 
} 
Смежные вопросы