关闭

UITableView 常用的委托方法:

标签: uitableview
83人阅读 评论(0) 收藏 举报
分类:

1 分区的个数


- (NSInteger)numberOfSectionsInTableView:(UITableView *) tableView
{
    return  数据分组的个数; 
    //例 return 2:

}
 

2 屏幕右边的标题索引


- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    NSArray *temp=[NSArray arrayWithObjects:@"xigua",@"tudou",nil];
    return temp;
}
 

3 点击单元格出发的事件


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     //点击的事件

}
 

4 点击删除按钮时,能够删除,指定位置的单元格,和对应的数组中的内容


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{


}

 

5 每个分区的行数


- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{

}
 

6 每行 的缩进


- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{

}

 

7 构建单元格


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
 static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                             SimpleTableIdentifier];
    if (cell == nil) {      
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier: SimpleTableIdentifier] autorelease];

        cell.imageView.image=[UIImage imageNamed:@"flake"];
        cell.backgroundView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star.png"]];
}
 

8 设置分区的 每一个标题


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

    if (section==0) {
        return @"luobo";
    }
    return @"tudou";

}
 

9 为每个分区设置一个按钮(视图)


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

    UIButton *sectionbutton=[UIButton buttonWithType:UIButtonTypeRoundedRect];

    sectionbutton.frame=CGRectMake(0, 0, 320, 30);

    if (section==0) {

        [sectionbutton setTitle:@"xigua" forState:UIControlStateNormal];

    }

    if(section==1)
    {
        [sectionbutton setTitle:@"tudou" forState:UIControlStateNormal];

    }

    sectionbutton.tag=section;

    [sectionbutton addTarget:self action:@selector(titlebutton:) forControlEvents:UIControlEventTouchUpInside];

    return sectionbutton;


}
 

10 会在点击cell右边的指示button时,自动调用本方法。


- (void)tableView:(UITableView *)tableView 
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    //是为了防止本界面频繁的进入下一个界面时,频繁的创建下一个界面的对象。
    //重复使用childController。
    //因为是数组保存了控制器对象,所控制器的对象始终为1,不能释放,
    //导致下一个控制器对象调用的控制器对象创建以后就不会消失。
    if (childController == nil)
        childController = [[DisclosureDetailController alloc] 
                           initWithNibName:@"DisclosureDetail" bundle:nil];

    NSLog(@"111111");

   // childController.title = @"Disclosure Button Pressed";

    NSUInteger row = [indexPath row];

    NSString *selectedMovie = [list objectAtIndex:row];
    NSString *detailMessage  = [[NSString alloc] 
                                initWithFormat:@"You pressed the disclosure button for %@.", 
                                selectedMovie];
    childController.message = detailMessage;//因为message属性是retain
    [detailMessage release];
    //不能用下面的传值方式,不安全,因为在没有xib的情况下,不能保证label不为空
    //childController.label.text=detailMessage;
    childController.title = selectedMovie;


    [self.navigationController pushViewController:childController animated:YES];
}

11 不要该方法默认为删除风格


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;//没有风格 
      //这是一个枚举 还有其它风格
}

12 此方法可以没有,默认返回yes,改为no将无法移动


- (BOOL)tableView:(UITableView *)tableView 
canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

13表格的移动此方法可以实现在拖动单元格后,更改数据元的方法实现


- (void)tableView:(UITableView *)tableView 
moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
      toIndexPath:(NSIndexPath *)toIndexPath {
    NSUInteger fromRow = [fromIndexPath row];
    NSUInteger toRow = [toIndexPath row];

    id object = [[list objectAtIndex:fromRow] retain];//
    [list removeObjectAtIndex:fromRow];//remove 只是让其引用计数减一
    [list insertObject:object atIndex:toRow];
    [object release];
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5256次
    • 积分:315
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:2篇
    • 译文:1篇
    • 评论:0条
    文章分类
    文章存档