"self.navigationItem.rightBarButtonItem" не работает
У меня есть следующий код, взятый прямо из примера кода NavBar от Apple. Я поместил это в метод viewDidLoad для представления в моем приложении, которое представлено модально, и оно не будет работать.
UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"AddTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(addAction:)] autorelease];
self.navigationItem.rightBarButtonItem = addButton;
Какие-либо предложения?
4 ответа
Вам нужно использовать эти строки кода на странице, где вы представляете другой вид.
sceondController *obj=[[[sceondController alloc] initWithNibName:@"sceondController" bundle:nil] autorelease];
UINavigationController *navController=[[[UINavigationController alloc] initWithRootViewController:obj] autorelease];
[self.navigationController presentModalViewController:navController animated:NO];
и во втором представлении используйте тот же код, который вы используете для создания кнопки навигации.
Может быть, это решит вашу проблему.
Хорошо объяснил решение:
presentModalViewController: animated: представляет viewController модально, который не имеет UINavigationBar
, так что вы можете сделать некоторые вещи:
- Добавить
UINavigationBar
в кончике вашего viewController и добавьте туда кнопку "Добавить" и все, что вам нужно настроить. - Ты можешь использовать
pushViewController:animated
: чтобы показать viewController модально, который будет в стеке навигации и иметьUINavigationBar
для вас, чтобы добавить свою кнопку - Если ваш первый viewController не является
UINavigationController
, с помощьюpushViewController:animated:
не решит, так что вы можете представитьUINavigationController
Модально с вашим viewController в качестве rootViewController:
YourViewController *viewController =[[[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil] autorelease];
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease];
[self.navigationController presentModalViewController:navController animated:YES];
Надеюсь, что это поможет
Я предполагаю, что ваш контроллер представления на самом деле UINavigationController и все остальное на месте. В этом случае я бы изменил две вещи.
Я не хотел бы автоматически выпускать UIBarButtonItem. Это имеет тенденцию быть ненадежным с контроллерами представления, поэтому добавьте кнопку в список вещей, которые необходимо удалить при очистке
Я бы использовал функцию setter для установки кнопки. Вот мой код, который работает в моем контроллере навигации
clearAllButton = [[UIBarButtonItem alloc] initWithTitle:@"Очистить все" стиль: UIBarButtonItemStylePlain target: self action: @selector (rightButtonPressed:)];
[[self navigationItem] setRightBarButtonItem: clearAllButton];
Запустите ваше приложение на реальном устройстве. В iOS6 он не работает на симуляторе.