Iphone 编辑模式下的UITableView-';编辑';按钮不存在';不要改变现状

Iphone 编辑模式下的UITableView-';编辑';按钮不存在';不要改变现状,iphone,uitableview,editmode,Iphone,Uitableview,Editmode,我有一个UIViewController类,带有一个tableView。在viewDidLoad中: UIBarButtonItem *editIcon = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemEdit target:self action:@selector(toggleEditMode)] auto

我有一个UIViewController类,带有一个tableView。在viewDidLoad中:

UIBarButtonItem *editIcon = [[[UIBarButtonItem alloc]
initWithBarButtonSystemItem: UIBarButtonSystemItemEdit
                    target:self
                    action:@selector(toggleEditMode)] autorelease];
在te方法“toggleEditMode”中:

-(void)toggleEditMode{
if(self.theTable.editing) {
    [theTable setEditing:NO animated:YES];
    [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStylePlain];
}
else if ([callsArray count]!=0){
    [theTable setEditing:YES animated:YES];
    [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
}
}

问题是“编辑”按钮没有更改“完成”。少了什么?我声明了所有方法:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
谢谢


RL

您确定
callsArray
不是空的吗

toggleEditMode
中放置一个断点,然后查看那里发生了什么

编辑


好的,在理解您的问题后,看看这个

这是因为您在切换模式时只设置按钮的样式(而不是其文本)。您需要执行以下操作(或同等操作):


为什么不直接使用UIViewController的
-editButtonItem
?并覆盖
-setEditing:animated:
方法

// Assign the system's edit button, 
// it will change style when different edit status.
self.navigationItem.rightBarButtonItem = self.editButtonItem;

// The editButtonItem will invoke this method.
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    if (editing) {
         // Execute tasks for editing status
    } else {
         // Execute tasks for non-editing status.
    }
}

是的,我肯定。表格进入编辑模式,当我删除一行时,它工作。这不是问题所在。问题是当类是UITableViewController类时,“编辑”按钮不会更改其名称do“DONE”has does。相反,我的类是一个UIViewController,其中包含一个表。为什么不能像从UITableViewController继承类那样工作?我不能把按钮分配到桌子上,然后像那样工作吗?太好了。只是将if(editing)更改为if(theTable.editing),因为de tableView是一个IBOutlet。该类不是从UITableViewController继承的。谢谢,尽管这是个老问题,但它让我意识到我忘记了[super setEditing:editing animated:animated];线路,这就是我的不工作的原因。;)谢谢你发布这个。
// Assign the system's edit button, 
// it will change style when different edit status.
self.navigationItem.rightBarButtonItem = self.editButtonItem;

// The editButtonItem will invoke this method.
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    if (editing) {
         // Execute tasks for editing status
    } else {
         // Execute tasks for non-editing status.
    }
}