我正在Lynda.com上查看有关iphone开发的一些视频。
这家伙正在向选择器添加自定义数据,但是为了添加数据,他没有在头文件中声明方法。他正在检查文档中需要哪些方法,并在他的控制器类中复制粘贴那些方法声明。
例如,这个方法
-(int) numberOfComponentsInPickerView: (UIPickerView *) pickerView
为什么我们不需要在头文件中声明这些方法?
如果这些方法属于picker类,为什么我们在控制器类中声明它们而不是简单地在picker IBOutlet实例中调用它们?
TIA
答案 0 :(得分:1)
当您在标题中声明您遵循某个协议时,您基本上是说您同意实施协议中定义的方法。 我敢打赌他在标题中加了这样的东西:
<UIPickerViewDataSource>
这意味着他正在实施UIPickerViewDataSource协议。
因此,通过实施UIPickerViewDataSource
协议,您意味着这些方法,因此,它们不需要原型化。
答案 1 :(得分:1)
如果这些方法属于picker类,为什么我们在控制器类中声明它们而不是简单地在picker IBOutlet实例中调用它们?
您引用的方法不属于UIPickerView
类,而属于UIPickerViewDataSource
协议。您的控制器充当拾取器的“帮助器”,因此如果需要确定应该显示的组件数量,则选择器会调用您的控制器。您通常不会自己调用此方法。
正如another answer指出的那样,通过声明实现协议,隐式声明了该协议的方法。通过向您的界面添加<UIPickerViewDataSource>
,您基本上会说“我可以充当选择器视图的数据源,并且我已准备好为任何想要调用协议中声明的方法的选择器”。