2017-05-18 1 views
0

これは私のソースコードです。私がやったことは、storyBoardのピッカービューを作ることです。 contorl + dragでこのコントローラーのIBOutletを作成します。PickerViewには '?'のみが表示されます。

コンパイルすることはできますが、 '?'ピッカービューに表示されます。

問題はどこですか?

import UIKit 

class SelectViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{ 
    var songNames = ["test1","test2","test3"] 

    @IBOutlet weak var songPicker: UIPickerView! 

    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] 
    } 
} 
+0

コンソールに何も表示されていませんか?これのスクリーンショットを表示できますか?また、配列から戻る代わりに文字列... 'return" Blah "'をハードコードするとどうなりますか?また、 'songNames'が変更されない場合、それは' let'でなければなりません。 – Fogmeister

答えて

2

dataSourceメソッドのforComponentパラメータが欠落しています。これは、あなたが持っている問題を修正する必要があり

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

:このようなあなたのtitleForRow機能でそれを追加します。

+0

これは事実上何もしません。 – Fogmeister

+0

彼の_titleForRow_デリゲートメソッドに_forComponent_パラメータがありません。 – kkakkurt

+1

これは、「このソリューションを試すことができましたか? (特に、より明確なコードを変更した場合)。あなたのコードをコメントし、あなたの答えをコメントしてください。あなたは今、技術的に正しい答え(しかし、依然として貧しい答え)に投票します。 – Fogmeister

関連する問題