2017-01-16 4 views
1

私はSwift OOPの本を読んでいますが、関数内で使用される引数を持つインスタンスメソッドの考え方を理解しています。 UIPickerViewsやUITableViewsのオンラインチュートリアルに従っている間に、UIPickerViewやUITableViewオブジェクトをパラメータとして持つが、関数では使用されないメソッドが存在するかどうかは不明です。例えばUIPickerViewメソッドは引数としてUIPickerViewオブジェクトを持っていますが、未使用です

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     // Return the number of rows of data 
     return gamesList.count 
    } 

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

     return gamesList[row].name 
    } 

UIPickerViewオブジェクトをとる第1パラメータpickerViewこれらの関数内で使用されていません。なぜ私はそれらをメソッドのシグネチャのパラメータとして持つのだろうと思っていますが、これらのオブジェクトはチュートリアルではほとんど使用されません。あるいは私はこれについて間違って考えていますか?

ご理解いただきまして、ありがとうございました。

答えて

1

あなたが話しているすべてのDelegateDatasourceメソッドからの第一の目的は、未使用のオブジェクトではありませんあなたは同じViewControllerに複数のUIPickerViewを持っている場合、それが使用されますので、それは、現在のUIPickerViewの参照を保持します。他のすべてがUITableViewのようにコントロールするためにあなたは、あなたがUIPickerView方法でそれを比較することにより、UIPickerViewを埋めることができ、同じControllerで2 UIPickerViewを持っている場合は、同じことは、例えばのためにUICollectionViewなど

、行きます。

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    if pickerView == firstPickerView { 
     return gamesList1.count 
    } 
    //else return for second pickerView 
    return gamesList2.count   
} 

だからあなたはUIPickerViewのすべてのメソッドでpickerView参照を比較し、それに応じてデータを埋めるか、アクセスする必要があります。

関連する問題