editButtonItem установлен, но нет кнопок минус? - PullRequest
7 голосов
/ 25 мая 2009

Моя кнопка редактирования находится в viewDidLoad:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

Он правильно отображается на панели навигации, и, нажав эту кнопку, действительно измените его на Готово. Тем не менее, в моих строках таблицы нет кнопок минус. Проведите по строке, а затем нажмите «Удалить работает».

Есть идеи?

РЕДАКТИРОВАТЬ 1: Вот как я делаю:

- (void)loadView {
tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
tableView.delegate = self;
tableView.dataSource = self;
tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

self.view = tableView;
}

РЕДАКТИРОВАТЬ 2: Мое наблюдение состоит в том, что кнопки редактирования и минуса хорошо отображаются, если мое представление таблицы создано в IB (RootViewController). Два других (или три) табличных представления создаются вышеуказанным кодом, так что это может быть проблемой. Думаю, мне придется погрузиться в редактирование, редактирование и еще много чего.

Ответы [ 5 ]

39 голосов
/ 12 апреля 2010

Если вы не создаете подкласс UITableViewController, есть способ сделать это. Просто реализуйте setEditing: animated: в вашем подклассе UIViewController следующим образом:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing: editing animated: animated];
    [self.tableView setEditing:editing animated:animated];
}

Примечание: при необходимости заменить "self.tableView" ...

Также добавьте кнопку «Редактировать» на панель инструментов:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

И это все!

11 голосов
/ 25 мая 2009

Глупый я. Я забыл изменить UIViewController (класс, от которого наследуется мой контроллер представления) на UITableViewController. Теперь это работает.

Без этого мне нужно было бы вручную включить редактирование строк, например:

// in loadView
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)];

- (void)turnOnEditing {
[self.navigationItem.rightBarButtonItem release];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(turnOffEditing)];
[self.tableView setEditing:YES animated:YES];
}

- (void)turnOffEditing {
[self.navigationItem.rightBarButtonItem release];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(turnOnEditing)];
[self.tableView setEditing:NO animated:YES];
}
2 голосов
/ 12 ноября 2014

Чтобы показать и активировать кнопку минус в левом углу каждой ячейки просмотра таблицы, выполните следующие действия:

Добавьте следующий код в метод viewdidload:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

// В приведенной выше строке отображаются кнопки «РЕДАКТИРОВАТЬ» и «ГОТОВО» в правом верхнем углу панели навигации.

А также добавьте следующий метод в ваш файл .m, чтобы показать и анимировать знак МИНУС в ячейках табличного представления.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
 {
    [super setEditing:editing animated:animated];

    if(editing == YES) {

    [self.tableView setEditing:editing animated:animated];

     } else {

    [self.tableView setEditing:NO animated:animated];

     }

}
0 голосов
/ 20 января 2011

Я столкнулся с той же проблемой. В соответствии с документами для UITableViewController, он гласит: UITableViewController реализует метод суперкласса setEditing: animated: так, что если пользователь нажимает кнопку Edit | Done на панели навигации, контроллер переключает режим редактирования таблицы.

См. Последнюю точку маркера в UITableViewController документ.

0 голосов
/ 25 мая 2009

Вам, вероятно, нужно сделать:

self.tableView = tableView;

в вашем loadView методе. Это свойство, которым UITableViewController манипулирует, и оно устанавливается автоматически, если вы загружаете представление из NIB. Поскольку вы создаете представление программно, вам нужно установить его явно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...