实现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]-1 inSection:0];
[_myTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
浙公网安备 33010602011771号