iPhone:添加&使用编辑模式在UITableview中删除行

时间:2011-09-29 05:03:39

标签: iphone

我想做的是:

  1. 在UITableView中的NavigationBar上设置编辑模式会在UINavigationBar的左侧添加一个edit按钮。当我点击此按钮时,我想在导航栏的右侧显示add按钮。

  2. 当我点击add按钮时,在NSMutableArray中添加一行并更新表格。

  3. 所以请给我一些想法,代码或链接来开发这个功能。

2 个答案:

答案 0 :(得分:8)

- (IBAction)DeleteButtonAction:(id)sender
{
    [arry removeLastObject];

    [Table reloadData];
}


- (IBAction) EditTable:(id)sender

{

    if(self.editing)

    {

      [super setEditing:NO animated:NO];

      [Table setEditing:NO animated:NO];

      [Table reloadData];

        [self.navigationItem.leftBarButtonItem setTitle:@"Edit"];

        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStylePlain];

    }

    else

    {

      [super setEditing:YES animated:YES];

      [Table setEditing:YES animated:YES];

      [Table reloadData];

        [self.navigationItem.leftBarButtonItem setTitle:@"Done"];

        [self.navigationItem.leftBarButtonItem setStyle:UIBarButtonItemStyleDone];

    }

}

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

      if (self.editing == NO || !indexPath) return UITableViewCellEditingStyleNone;

      if (self.editing && indexPath.row == ([arry count]))

    {

      return UITableViewCellEditingStyleInsert;

    } else

    {

      return UITableViewCellEditingStyleDelete;

    }

    return UITableViewCellEditingStyleNone;

}

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle

forRowAtIndexPath:(NSIndexPath *)indexPath

{

   if (editingStyle == UITableViewCellEditingStyleDelete)

    {

        [arry removeObjectAtIndex:indexPath.row];

      [Table reloadData];

    } else if (editingStyle == UITableViewCellEditingStyleInsert)

    {

        [arry insertObject:@"Tutorial" atIndex:[arry count]];

      [Table reloadData];

    }

}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

{

    return YES;

}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath

      toIndexPath:(NSIndexPath *)toIndexPath

{

    NSString *item = [[arry objectAtIndex:fromIndexPath.row] retain];

    [arry removeObject:item];

    [arry insertObject:item atIndex:toIndexPath.row];

    [item release];

}
}

答案 1 :(得分:0)

创建一个私有属性以引用“编辑”按钮:

@property (nonatomic) UIBarButtonItem *editButton;

在viewDidLoad:中,初始化按钮并将其指定给navigationItem的右键:

self.editButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit", nil) style:UIBarButtonItemStylePlain target:self action:@selector(toggleEdit:)];
self.navigationItem.rightBarButtonItem = self.editButton;

创建一个方法,在点击“编辑”按钮时调用。将更改表格的编辑模式并更新“编辑”按钮标题:

- (IBAction)toggleEdit:(id)sender {

    [self.myTableView setEditing:!self.myTableView.editing animated: YES];
    [self.editButton setTitle:self.myTableView.editing ? NSLocalizedString(@"Done", nil) : NSLocalizedString(@"Edit", nil)];
}