Как добавить uitoolbar в uitableviewcontroller? - PullRequest
2 голосов
/ 28 марта 2010

У меня есть UITableViewController, в который я хотел бы добавить UIToolbar одной кнопкой. В

- (void)viewDidLoad;

метод UITableViewController у меня есть:

- (void)viewDidLoad {
[super viewDidLoad];

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                             target:self
                                                                             action:@selector(pressButton1:)];

self.navigationItem.title = @"Some title";
self.navigationItem.leftBarButtonItem = button;
 }

К сожалению, я не вижу панель инструментов, когда запускаю свое приложение. Есть намеки? Должен ли я сделать что-то еще?

Ответы [ 4 ]

3 голосов
/ 29 марта 2010

Свойство navigationItem контроллера представления бесполезно, если этот контроллер не отображается внутри UINavigationController.
Если ваш контроллер вида находится внутри контроллера навигации, я не знаю, в чем проблема.
В противном случае вы можете использовать UINavigationItem, но вам нужно создать UINavigationBar самостоятельно. Либо в Интерфейсном Разработчике (добавьте UINavigationBar и добавьте UINavigationItem, затем подключите UINavigationItem к розетке свойств, объявленной вашим контроллером представления (вам не нужно подключать Панель).
Или в вашем коде:

UIBarButtonItem *item = [[UIBarButtonItem alloc] 
                             initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                             target:self action:@selector(pressButton1:)];

UINavigationItem* navItem = [[UINavigationItem alloc] init];
navItem.rightBarButtonItem = item;
navItem.title = @"Your title";

naviBar = [[UINavigationBar alloc] init];
naviBar.items = [NSArray arrayWithObject:navItem];
naviBar.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, 44.0);
[self.view addSubview:naviBar];
[navItem release];
2 голосов
/ 28 марта 2010

Ваш метод требует автоматического выпуска:

- (void)viewDidLoad {
[super viewDidLoad];

UIBarButtonItem *button = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressButton1:)] autorelease];

self.navigationItem.title = @"Some title";
self.navigationItem.leftBarButtonItem = button;
 }

Нет ничего плохого в вашем коде как таковом.Ваш вопрос гласит, что вы хотите добавить UIToolBar к вашему представлению?В самом деле?Или вы просто хотите добавить кнопку в NavigationItem для UITableView?

1 голос
/ 07 марта 2013

Если у вас нет для использования UITableViewController и вы еще не используете UINavigationController в своем приложении, вы можете настроить свой контроллер представления как обычный UIViewController с панелью инструментов и таблицей.

Чтобы сделать это в IB, перетащите объект UIViewController и добавьте панель инструментов и табличное представление. Подключите розетки для обоих и установите делегата и источник данных для таблицы в «Владельце файлов». Добавьте любые другие элементы или кнопки панели инструментов и предоставьте им выходы и методы, если они вам нужны для кнопок и т. Д. В файле ViewController.h убедитесь, что вы зарегистрировали его для соответствия UITableViewDataSource и UITabBarDelegate:

@interface ViewController : UIViewController <UITableViewDataSource, UITabBarDelegate>

Оттуда просто создайте свои методы делегата представления таблицы и источника данных, как вы это обычно делаете, и напишите свои методы действия кнопок для любых кнопок, добавленных на панель инструментов.

0 голосов
/ 25 июня 2013

Вы просто не показывали панель инструментов. Это скрыто по умолчанию. Чтобы это исправить, просто введите следующую строку кода:

self.navigationController.toolbarHidden = NO;

Я попробовал, и это сработало. Просто убедитесь, что вы добавили в метод реализации метод viewDidLoad.

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