Вы не захотите размещать / инициализировать панель в своем коде, если она уже есть в IB.Это создаст вторую версию, и сообщения могут быть искажены.Если вы помещаете панель в свой вид в IB, было бы проще разместить там кнопку «Готово».Во-первых, вы захотите использовать UINavigationItem вместо UINavigationBar.Перетащите UIBarButtonItem на правую сторону вашего UINavigationItem, измените текст с Item на Done и выберите стиль.Затем вы создадите метод IBAction, чтобы сделать то, что вы хотите, чтобы кнопка делала (отклонить представление).Тогда это просто вопрос подключения селектора вашей кнопки (в IB) к методу IBAction, и это будет делать то, что вы хотите.
Если вы хотите / должны сделать это программным путем, вы просто будете использовать
rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissView:)];
navigationItem.rightBarButtonItem = rightButton;
[rightButton release];
Вам также понадобится метод dismissView:
.
- (IBAction)dismissView:(id)sender {
// do something;
}
РЕДАКТИРОВАТЬ: чтобы сделать все это программно, вы начнете с добавления панели навигации кВаш заголовочный файл
UINavigationBar *navBar;
Вам действительно нужно это сделать, только если вы планируете разрешить изменение ориентации.Так как вы не используете IB, нет необходимости делать это выходом, поэтому мы закончили в заголовке.
В файле реализации вы хотите вызвать следующее:
- (void)viewDidLoad {
navBar = [[UINavigationBar alloc] init];
UINavigationItem *navItem = [[[UINavigationItem alloc] initWithTitle:@"some title"] autorelease];
UIBarButtonItem *done = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissView:)] autorelease];
navItem.rightBarButtonItem = done;
navBar.items = [NSArray arrayWithObject:navItem];
[self.view addSubview:navBar];
}
- (void)viewDidAppear:(BOOL)animated {
navBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
navBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
}
- (void)dealloc {
[navBar release];
}
Это начинается с создания экземпляров и размещения их в вашем представлении.Как только представление появляется и размер кадра известен программе, он изменяет размер панели навигации (которая, в свою очередь, изменяет размеры своих подпредставлений) до ее надлежащего размера.Затем каждый раз, когда меняется ориентация, он соответственно изменяет размеры.Я проверил это только для того, чтобы убедиться, что все это хорошая информация, и она отлично работает для меня, поэтому она должна быть полезной и для вас.Надеюсь, это поможет вам