【发布时间】:2012-09-07 10:15:08
【问题描述】:
这个 UITableViews 会让我发疯的!
我有 UITableViewCell 创建的
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
doneButton = [[UIButton alloc]initWithFrame:CGRectMake(7, 15, 30, 30)];
[cell addSubview:doneButton];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[doneButton addTarget:self action:@selector(done:) forControlEvents:UIControlEventTouchDown];
UILabel *postedTime = [[UILabel alloc]initWithFrame:CGRectMake(240, 4, 60, 15)];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
postedTime.backgroundColor = [UIColor clearColor];
[cell addSubview:postedTime];
cell.textLabel.textColor = [UIColor blackColor];
UILabel *post = [[UILabel alloc] initWithFrame:CGRectMake(45, 25, 190, 30)];
[cell addSubview:post];
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(45, 4, 180, 15)];
[cell addSubview:title];
mission *m = (mission *)[missionsArray objectAtIndex:indexPath.row];
title.text = m.title;
post.text = m.post;
postedTime.text = m.posted;
.h 文件:
IBOutlet UITableView *table;
NSMutableArray *missionsArray;
我正在尝试按方法删除行
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[missionsArray removeObjectAtIndex:indexPath.row];
[table reloadData];
}
当我点击“删除”按钮 EXC_BAD_ACCESS。我试图调用 [missionsArray removeAllObject]; ——同样的错误。然后我尝试了 NSLog(@"%u", indexPath.row); -- 它打印正确的行(当我选择第一行时,它返回 0 等等)。我也试过这个
if (editingStyle == UITableViewCellEditingStyleDelete) {
[missionsArray removeObjectAtIndex:indexPath.row];
[table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
[table reloadData];
}
而且我没有好的结果。也许细胞高度会影响它...... 请帮忙。我不知道该做什么,在哪里搜索。
问题解决了。 当我试图释放我的任务对象时,麻烦出现了逻辑错误。
【问题讨论】:
-
与您的问题无关...但是您是否有理由每次都“创建”按钮和额外的标签,而不是一次?
-
也许是我的逻辑错误
-
由于所有单元格都是相同的并且“可重复使用”,因此将所有按钮和标签的初始化代码移动到
if (cell == nil) {块内,它将提高性能,(最好创建子类以保持整洁)
标签: iphone ios uitableview delete-row