2017-05-18 43 views
1

我有錯誤使用UIPickerViewUIPickerView上夫特3

SelectViewController.swift:35:10: Method 'pickerView(pickerView:numberOfRowsInComponent:)' has different argument names from those required by protocol 'UIPickerViewDataSource' ('pickerView(_:numberOfRowsInComponent:)') 

我上故事板設置UIPickerView和連接這對songPicker變量。

然後我想我集成了必要的功能,但它顯示了這樣的錯誤。

我發現picker視圖的結構在swift版本上發生了變化。

但是找不到正確的答案。

我的swift是3.1

有人幫我嗎?

class SelectViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{ 

    @IBOutlet weak var songPicker: UIPickerView! 

    let songNames = ["test","test2"] 

    override func viewDidLoad(){ 
      songPicker.delegate = self 
      songPicker.dataSource = self 

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


    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return songNames.count 
    } 
    func pickerView(pickerView: UIPickerView, titleForRow row: Int) -> String? { 
     return songNames[row] 
    } 
    override func didReceiveMemoryWarning() { 

    } 
} 
+0

刪除此FUNC .. FUNC numberOfComponents(在pickerView:UIPickerView) - >詮釋{ 回報1} –

回答

1

使用此方法,請參閱pickerview之前使用_。這是唯一的問題

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

    } 
+0

感謝它作品!我需要更多地學習Swift。順便說一下,我的pickerviews只顯示'?'在現場而不是「test1」「test2」這可能是另一個問題,雖然.... – whitebear

+0

我認爲可能有一些其他問題。需要你的完整代碼檢查,否則,你提供的代碼應該顯示test1和test2 –

1

UIPickerViewDataSource是迅速變化3和以上。

更新過的語法: -

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

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

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

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

} 

看一看apple documentationSO參考)。

+0

在重複答案中沒有意義?,你已經看到有相同的答案可用,那麼爲什麼要再次放置同樣的東西?使stackoverflow更好的地方。 –

2

試試這個代碼

class ElibraryViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource { 

@IBOutlet weak var txtTitle: UITextField! 
@IBOutlet weak var Picker: UIPickerView! 
let songNames = ["test","test2"] 

override func viewDidLoad() 
    { 

     super.viewDidLoad() 


      } 

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


      return songNames[row] 
    } 

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



     let obj = songNames[row] 
     txtTitle.text = obj 



    } 

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

     return 1 
    } 

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



     return songNames.count 



    } 
override func didReceiveMemoryWarning() { 

    } 
} 
+0

在重複答案中沒有意義嗎?,你已經看到有相同的答案可供使用,那麼爲什麼要重新做同樣的事情?使stackoverflow更好的地方。 –