我正在阅读一本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未在这些函数中使用。我想知道为什么将它们作为方法签名中的参数,但这些对象在教程中很少使用?或者我错误地想到了这个?
提前感谢您提供任何帮助,以便更好地理解。
答案 0 :(得分:1)
您正在讨论的所有Delegate
和Datasource
方法中的第一个对象不是未使用的对象,它将保留当前UIPickerView
的引用,因此它将用于您在同一个UIPickerView
中有多个ViewController
。同样的事情也适用于UITableView
,UICollectionView
等所有其他控件。
例如,如果您在同一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
引用,并根据它填写或访问数据。