iPhone,如何切换我的表格的编辑按钮然后切换到完成并返回编辑?

时间:2010-10-06 11:54:38

标签: iphone uitableview

我添加了我的编辑按钮

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
        initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self 
        action:@selector(editNavButtonPressed)] autorelease];

但我似乎无法将其转为完成并返回,控制台表示其无效

-(IBAction)editNavButtonPressed
{
//[self.tableView setEditing:YES animated:YES];
BOOL editing = !self.tableView.editing;
NSLog(@"tile=#%@#", self.navigationItem.rightBarButtonItem.title);

if ([self.navigationItem.rightBarButtonItem.title isEqualToString:NSLocalizedString(@"Edit", @"Edit")]) {
    self.navigationItem.rightBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
} else {
    self.navigationItem.rightBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");

}
//self.navigationItem.rightBarButtonItem.enabled = !editing;
//self.navigationItem.rightBarButtonItem.title = (editing) ? NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit");
[self.tableView setEditing: editing animated: YES];

}

3 个答案:

答案 0 :(得分:29)

您应该使用-[UIViewController editButtonItem],它会正确地从编辑/完成切换状态,并且还会切换UIViewController本身的编辑模式。

使用类似的设置进行设置:

-(void)viewDidLoad {
   self.navigationItem.rightBarButtonItem = [self editButtonItem];
}

然后,您可以覆盖-[UIViewController setEditing:animated:],以便在切换编辑模式时立即收到通知。

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    // Add your custom code here
}

或者你可以查询UIViewController它的当前编辑状态,如下所示:

if ([self isEditing]) {
    // Do something editing like
} else {
    // Do whatever is not editing like.
}

答案 1 :(得分:1)

更改按钮样式或使用builtin self.editButtonItem;

检查一下 - How to change UIBarButtonItem's type in UINaviagationBar at runtime?

干杯, KrzysztofZabłocki

答案 2 :(得分:1)

斯威夫特3:

在tableViewController中为编辑按钮添加插座和操作:

@IBOutlet var editButton:UIBarButtonItem!

@IBAction func editTapped() {
    if(self.tableView.isEditing){
        self.tableView.setEditing(false, animated:true)
        editButton.title = "Edit"
    }else{

        self.tableView.setEditing(true, animated:true)
        editButton.title = "Done"
    }
}

将barButtonItem添加到storyboard中的tableViewController,然后连接按钮的引用插座并发送操作。