Customise your own Edit-Done UINavigationBarButton

First, create two properties on your class for your two UIBarButtonItems.

@property (nonatomic, retain) UIBarButtonItem *editButton;
@property (nonatomic, retain) UIBarButtonItem *doneButton;

 

– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

UIButton *editBtn = [UIButton buttonWithType:UIButtonTypeCustom];

[editBtn setImage:[UIImage imageNamed:@”edit.png”] forState:UIControlStateNormal];

[editBtn setFrame:CGRectMake(3, 5, 30, 30)];

[editBtn addTarget:self action:@selector(editButtonPressed) forControlEvents:UIControlEventTouchUpInside];

editButton = [[UIBarButtonItem alloc] initWithCustomView:editBtn];

UIButton *doneBtn = [UIButton buttonWithType:UIButtonTypeCustom];

[doneBtn setImage:[UIImage imageNamed:@”done.png”] forState:UIControlStateNormal];

[doneBtn setFrame:CGRectMake(3, 5, 30, 30)];

[doneBtn addTarget:self action:@selector(doneButtonPressed) forControlEvents:UIControlEventTouchUpInside];

doneButton = [[UIBarButtonItem alloc] initWithCustomView:doneBtn];

[self.navigationItem setRightBarButtonItem:self.leftBarButtonItem animated:YES];

}

return self;

}

- (UIBarButtonItem *)leftBarButtonItem
{
    if (self.tableView.editing)
        return self.doneButton;

    return self.editButton;
}

– (void)editButtonPressed

{

self.StoreTblView.editing = TRUE;

[self.navigationItem setRightBarButtonItem:self.leftBarButtonItem animated:YES];

}

– (void)doneButtonPressed

{

self.StoreTblView.editing = FALSE;

[self.navigationItem setRightBarButtonItem:self.leftBarButtonItem animated:YES];

}

Leave a comment