я могу добавить UIBarButtonItem полностью IB бесплатно? - PullRequest
0 голосов
/ 19 июля 2011

Я создал навигационную панель и метку программно в моем контроллере представления. Теперь я хочу добавить кнопку «Готово», но, кажется, не могу найти способ без использования IB .... Есть ли способ сделать это?

Вот viewDidLoad моего контроллера представления:

//Adding navBar programmatically 
CGFloat width = self.view.frame.size.width;
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,width,52)];
navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self.view addSubview:navBar];

//Adding label to navBar programmatically 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10,2,width-20,14)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
label.text = @"TITLE";
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:22];
label.shadowOffset = CGSizeMake(1,1);
label.textColor = [UIColor whiteColor];
label.textAlignment = UITextAlignmentCenter;
[navBar addSubview:label];

//Adding back button to navBar programmatically 
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(dismissView:)];
self.navigationItem.leftBarButtonItem = rightButton;   

Последняя часть явно не работает ...

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Почему вы не используете UIToolBar вместо этого?

Чтобы добавить кнопки к UINavigationBar, вам необходимо создать UINavigationItem.Если вы используете UINavigationBar как часть UINavigationController (как это обычно бывает), это делается автоматически, для автономного просмотра вы должны сделать это самостоятельно.

UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@""] autorelease];
item.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView:)] autorelease];
[navBar setItems:[NSArray arrayWithObject:item] animated:NO];
0 голосов
/ 19 июля 2011

Элемент navigationItem используется только при нажатии контроллера представления в контроллере навигации

в вашем случае вам нужно использовать

-pushNavigationItem: анимированные:

на UINavigationBar

Проверьте документы для более подробной информации:

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UINavigationBar_Class/Reference/UINavigationBar.html

...