Кнопки Назад, Изменить и Добавить на панели навигации TableView с раскадровкой на iOS - PullRequest
2 голосов
/ 07 декабря 2011

Я сталкиваюсь с некоторыми проблемами при реализации табличного представления с кнопками «Назад», «Редактировать» и «Добавить» на панели навигации. Вид таблицы достигается нажатием на строку другого вида таблицы, поэтому кнопка «Назад» добавляется автоматически. С раскадровкой я добавил кнопку «Добавить» на панель навигации. С кодом я добавил кнопку «Редактировать» ( Я использовал код, так как, если я добавляю кнопку с раскадровкой, я не знаю, как воспроизвести стандартное поведение «Редактировать» ... ) :

self.navigationItem.leftBarButtonItem = self.editButtonItem;

Проблема в том, что таким образом кнопка «Редактировать» скрывает кнопку «Назад» на панели навигации.

На данный момент у меня есть два вопроса:

  1. Можно ли с раскадровкой добавить третью кнопку на панели навигации?
  2. В случае, если мне нужно сделать это программно, я знаю, что могу сделать это следующим образом:

    UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(width-90,6,50,30)];
    [button setTitle:@"Edit" forState:UIControlStateNormal];
    button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    [self.navigationController.navigationBar addSubview:button];
    

Но как я могу реализовать через код стандартное поведение кнопки «Редактировать»? Я имею в виду, я нажимаю «Изменить», и кнопка становится «Готово», и строки становятся удаляемыми ...

Спасибо заранее, Яс

Ответы [ 2 ]

4 голосов
/ 26 марта 2013

В том случае, если кто-то еще может наткнуться на этот вопрос, решение тоже довольно простое.UINavigationItem имеет свойство для rightItems, которое является просто массивом UIBarButtonItems.Поместите и кнопку добавления, и кнопку редактирования в массив и присвойте ей значение rightItems и все готово :-) А вот пример кода:

UITableViewController *table = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self     action:@selector(insertNewObject:)];
NSArray *barButtons = [NSArray arrayWithObjects:table.editButtonItem, addButton, nil];
table.navigationItem.rightBarButtonItems = barButtons;
2 голосов
/ 07 декабря 2011

Во-первых, в документации Apple говорится, что «вы не добавляете подпредставления на панель навигации напрямую». Не знаю, достаточно ли этого, чтобы приложение отскочило от магазина, но оно не считается «правильным».

Во-вторых, вы можете добавить более трех кнопок к UINavigationItem в iOS 5, но не в iOS 4 или более ранней версии.

Наконец, я бы оставил кнопку редактирования в правом верхнем углу и назад в левом верхнем углу. Вот где люди ожидают их. Если бы я хотел добавить кнопку (и на iOS 5), я бы поместил ее рядом с кнопкой редактирования.

К сожалению, никакой помощи на раскадровках. Ничего о них не знаю.

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