协议
协议是一组方法声明,其中的部分方法是必需的,另一些是可选的,如果某个对象要扮演特定的角色,就一定要实现相应的必需写法,并实现部分可选方法。
UITableView 的数据源协议是UITableViewDataSource,其声明的方法如下:
//与类一样,协议也能继承自其他协议
@protocol UITableViewDataSource <NSObject>
//必须实现部分
@require
//UITableView的对象有表格段,每个表格段又有行
- (NSUInteger) tableView:(UITableView *)tv numberOfRowsInSection:(NSUInteger)section;
//NSIndexPath对象包含两个整数(一个是表格段索引,另一个是行索引)
- (UITableViewCell *) tableView :(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip;
@optional
//如果数据源没有实现该方法,那么UITabkeView对象将只有一个表格段
- (NSInteger )numberOfSectionInTableView:(UITableView) tv;
//可以删除或移动该行
-(BOOL) tableView:(UITableView *)tv canEditRowAiIndexPath:(NSIndexPath *)ip;
-(BOOL) tableView:(UITableView *)tv canMoveRowAiIndexPath:(NSIndexPath *)ip;
-(void) tableView:(UITableView *)tv commitEidtingStyle:(UITableViewCellEditingStyle)editingStyle ForRowAtIndexPath:(NSIndexPath *)ip;
-(void) tableView:(UITableView *)tv MoveRowAiIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;