清秋梧桐

导航

实现UITableView一些操作

  • 关于accessoryType的设置

首先要在UITableView的数据源方法中指定单元格的accessaryType代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    

    static NSString *CellIdentifier = @"Cell";

    

    UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] autorelease];

    }

    

    FatherTableViewController *aTableView = [subTVCArrayobjectAtIndex:indexPath.row];

    NSLog(@"%@",aTableView);

    cell.textLabel.text = aTableView.title;

    cell.imageView.image = aTableView.imageView.image;

    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

    

    return cell;

}

 

然后为这个小按钮实现代理方法

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

{

    FatherTableViewController *aTableView = [subTVCArrayobjectAtIndex:indexPath.row];

    [self.navigationControllerpushViewController:aTableView animated:YES];

}

 

  • 删除表中数据的操作

    主要实现以下代理方法

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

    {

        

        [self.muArrayremoveObjectAtIndex:indexPath.row];

        [tableViewdeleteRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath]      withRowAnimation:UITableViewRowAnimationFade];

     

     

    }

    一定要先删除实际的数据再删除数据所对应的表视图,否则会出现程序崩溃的问题。究其原因,将表视图删除之后,就没有与数组(或数据库)数据索引值对应的indexPath,再对其进行操作的话,必然引起崩溃。

     

  • 给表中插入数据的时候,自动让表滚动到某一行

     

    实现UITableView的这个成员方法

    - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

     

    参数:

    *UITableViewScrollPosition 表示显示特定行的位置是一个枚举类型,用来标示指定的行滚动到表的什么位置(bottom, top, middle,   none)

    *animated 指定是否通过动画的方式做删除操作。

    *第一个参数NSIndexPath用来指定滚动到哪一行,需要手动创建这个类。创建的时候要注意,同样都是NSIndexPath,有一个单独的NSIndexPath类,在UITableView中也有一个NSIndexPath类,这里我们要用UITableView里面的NSIndexPath来创建,代码如下:


    + (NSIndexPath *)indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section;

    这个方法帮我们封装了一个包含区(section)和行(row)的一个indexPath,方便对表进行操作。


    具体代码如下:

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[_contentArraycount]-inSection:0];

    [_myTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];


posted on 2012-11-02 08:32  清秋梧桐  阅读(436)  评论(0)    收藏  举报