UIPickerView方法将UIPickerView对象作为参数但未被使用

时间:2017-01-16 05:07:40

标签: ios swift uitableview oop uipickerview

我正在阅读一本Swift OOP书,我理解了具有将在函数中使用的参数的实例方法的想法。目前尚不清楚的是,在关注UIPickerViews和UITableViews的在线教程时,有些方法将UIPickerView或UITableView对象作为参数但未在函数中使用。

例如:

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对象的参数pickerView未在这些函数中使用。我想知道为什么将它们作为方法签名中的参数,但这些对象在教程中很少使用?或者我错误地想到了这个?

提前感谢您提供任何帮助,以便更好地理解。

1 个答案:

答案 0 :(得分:1)

您正在讨论的所有DelegateDatasource方法中的第一个对象不是未使用的对象,它将保留当前UIPickerView的引用,因此它将用于您在同一个UIPickerView中有多个ViewController。同样的事情也适用于UITableViewUICollectionView等所有其他控件。

例如,如果您在同一UIPickerView中有2个Controller,那么您可以通过UIPickerView方法比较来填充UIPickerView

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

因此,您需要比较pickerView所有方法中的UIPickerView引用,并根据它填写或访问数据。