Лучше ли выделять / освобождать новые UIBarButtonItems при переключении Edit / Done? Зачем? - PullRequest
2 голосов
/ 16 марта 2010

Документация 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 ]

2 голосов
/ 15 июля 2010

Я не знаю, почему они делают это в этом примере кода, но есть гораздо более простой способ добавить кнопку «Редактировать / Готово» для любого вида контроллера представления (доступно начиная с SDK 2.0). UIViewController поставляется с собственным элементом кнопки редактирования, так что вы можете просто сделать это:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = self.editButtonItem;
}

Кнопка редактирования позаботится о переводе контроллера вида в режим редактирования и из него и соответствующим образом обновит стиль кнопки.

1 голос
/ 16 марта 2010

Существует несколько по умолчанию UIBarButtonItem с, выполненных Apple. Использование этих кнопок по умолчанию, называемых UIBarButtonSystemItem , позволит пользователю определить действие, которое эта кнопка выполняет в каждом приложении, которое их использует. Apple требует использовать эти кнопки по умолчанию в соответствии с их HIG.
Таким образом, ответ сводится к следующему: Изменение названия кнопки отличается от использования стандартных кнопок «Готово» и «Редактировать». Они выглядят по-другому (например, кнопка «Готово» использует светло-голубой).

...