在切换编辑/完成时分配/解除分配新的UIBarButtonItem是否更好?为什么?

时间:2010-03-16 05:40:50

标签: iphone uitableview uikit uibarbuttonitem

Apple的文档暗示,对于可通过“编辑/完成”按钮进行编辑的UITableView,您应该在每次切换时创建并销毁该按钮。

这是一段代码“BonjourWeb”示例代码项目:

if (editing) {
    // Add the "done" button to the navigation bar
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneAction:)];

    self.navigationItem.leftBarButtonItem = doneButton;
    [doneButton release];

    [self addAddButton:YES];
} else {
    if ([self.customs count]) {
        // Add the "edit" button to the navigation bar
        UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
                                       initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editAction:)];

        self.navigationItem.leftBarButtonItem = editButton;
        [editButton release];
    }

这真的比仅仅编辑按钮标题更好吗?是否有一些我没有看到的性能优化?或者这只是不好的示例来源?

2 个答案:

答案 0 :(得分:2)

我不知道为什么他们会在该代码示例中执行此操作,但是为任何类型的视图控制器添加“编辑/完成”按钮都有一种更简单的方法(自SDK 2.0起可用)。 UIViewController带有自己的编辑按钮项,所以你可以这样做:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = self.editButtonItem;
}

编辑按钮将处理视图控制器进入和退出编辑模式,并相应地更新按钮样式。

答案 1 :(得分:1)

Apple已完成多项默认 UIBarButtonItem。使用这些名为UIBarButtonSystemItem的默认按钮,用户可以识别此按钮在使用这些按钮的每个应用中执行的操作。 Apple要求根据他们的HIG使用这些默认按钮 所以答案归结为: 更改按钮的标题与使用默认的“完成”和“编辑”按钮不同。它们具有不同的外观(例如“完成”按钮使用浅蓝色。)