如何在iPhone中编辑TableView?

时间:2011-05-09 06:54:31

标签: iphone objective-c uitableview edit

在我的应用程序中,我需要一个用于我的tableview的编辑按钮,可以删除一行或更改其位置。 当我使用默认导航栏时,它真的很容易,但现在在我的情况下,我正在使用感染了imageview&的自定义栏。现在我需要一个可以编辑tableview的按钮。我没有使用默认导航栏。

所以请帮助我

4 个答案:

答案 0 :(得分:1)

你只需要在你的UITableViewController中设置UITableView的editing属性,就像这样;

- (void) editingButtonPressed:(id)sender {
  if([self isEditing]) {
    [sender setText:@"Edit" forState:UIControlStateNormal];
    [self setEditing:NO animated:YES];
  } else {
    [sender setText:@"Done" forState:UIControlStateNormal];
    [self setEditing:YES animated:YES];
  }
}

如果您没有文字,请将其与您的按钮或图片相关联,并将setText替换为setImage

以下是使用自定义init UITableViewController的{​​{1}}方法,该方法会在导航栏中添加两个按钮来代替右侧导航栏按钮。

UIToolbar

创建按钮时,我在创建按钮时使用- (id) init { [super initWithStyle:UITableViewStyleGrouped]; UIBarButtonItem *email = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Email.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(composeEmail:)] autorelease]; UIBarButtonItem *bookmark = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addBookmark:)] autorelease]; [bookmark setStyle:UIBarButtonItemStyleBordered]; CustomToolbar *buttonToolbar = [[CustomToolbar alloc] initWithFrame:CGRectMake(0, 0, 93, 45)]; [buttonToolbar setBarStyle:UIBarStyleBlackTranslucent]; [buttonToolbar setItems:[NSArray arrayWithObjects:email, bookmark, nil] animated:NO]; [[self navigationItem] setTitle:@"Table with Custom Toolbar"]; [[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithCustomView:buttonToolbar] autorelease]]; [buttonToolbar release]; return self; } 将我的方法连接到按钮操作,在这种情况下action:@selector(customMethodName)composeEmail加载这些任务的新视图。

答案 1 :(得分:0)

您可以在imageview上添加一个按钮,然后点击该按钮,将tableviewediting设置为是。

这是代码如何添加imageview和按钮: -

UIImageView *imageView2=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    [imageView2 setImage:[UIImage imageNamed:@"bottom bar_gda.png"]];
    [self.view addSubview:imageView2];
    [self.view bringSubviewToFront:imageView2];
    UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [deleteButton setFrame:CGRectMake(280, 3, 26, 36)];
    deleteButton.contentMode = UIViewContentModeScaleAspectFill;     
    UIImage *newImage12 = [UIImage imageNamed:@"check.png"];
    [deleteButton setBackgroundImage:newImage12 forState:UIControlStateNormal];
    [deleteButton setBackgroundImage:newImage12 forState:UIControlStateHighlighted];
    [deleteButton addTarget:self action:@selector(editmethod:) forControlEvents:UIControlEventTouchUpInside];
    [imageView2 addSubview:deleteButton]; 

答案 2 :(得分:0)

您可以使用SWIPE删除功能。 这可以按照以下方式进行。

您需要实现以下3个tableView的委托方法。

tableView:commitEditingStyle:forRowAtIndexPath:
tableView:canEditRowAtIndexPath:
tableView:editingStyleForRowAtIndexPath: 

方法

tableView:editingStyleForRowAtIndexPath:

返回类型应

UITableViewCellEditingStyleDelete.

答案 3 :(得分:0)

您必须将UIButton实例添加到该imageview,并实现一个在该UIButton上发生事件时将执行的方法。

该方法的代码如下所示,

if(tableView.editing)
[tableView setEditing:NO animated:YES]
else
[tableView setEditing:YES animated:YES]

阅读UITableView Documentation了解详情。