Создайте пользовательскую кнопку влево на UINavigationBar со стандартной стрелкой слева
Когда я создаю пользовательскую кнопку возврата, я использую следующий код:
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithTitle:@"Yeah" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonPressed:)];
self.navigationItem.leftBarButtonItem = leftButton;
Это отлично работает, и я получаю этот результат:
![enter image description here]()
У меня был бы тот же результат, но со стрелкой слева, как это (когда это стандартная кнопка возврата, а не обычная):
![enter image description here]()
Как я могу просто добавить эту стрелку?
Ответы
Ответ 1
Наконец, здесь фрагмент, который я использую для определения названия кнопки "Назад" со стандартной левой стрелкой в текущем представлении, а не в родительском представлении:
- (void)viewDidLoad {
[super viewDidLoad];
[self setTitle:@"Current View"];
// Get the previous view controller
UIViewController *previousVC = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];
// Create a UIBarButtonItem
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"FooBar" style:UIBarButtonItemStyleBordered target:self action:@selector(yourSelector)];
// Associate the barButtonItem to the previous view
[previousVC.navigationItem setBackBarButtonItem:barButtonItem];
}
Здесь результат:
![enter image description here]()
Примечание: Однако, поскольку невозможно добавить действие на backBarButtonItem, вы можете обратиться к этому замечательному сообщению, если хотите это к.
Ответ 2
Проще всего было бы установить заголовок в родительском контроллере (т.е. тот, на который вы хотите вернуться назад). Если вы не хотите, чтобы это было то же самое, что и фактическое название, отображаемое в этом представлении VC, вы можете изменить заголовок в viewWillDisappear на то, что вы хотите на следующей кнопке VC назад, а затем изменить его на то, что вы хотите в parent в viewWillAppear.
Если вы используете раскадровки, вы также можете установить задний заголовок непосредственно в IB.
Наконец, чтобы создать пользовательскую кнопку "Назад", вы можете сделать что-то вроде:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Details" style:UIBarButtonItemStyleBordered target:nil action:nil];
... просто не забудьте сделать это в представлении (или родительском) контроллере представления, а не на контроллере просмотра (представленный контроллер).
Ответ 3
UIButton * backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton addTarget:self action:@selector(popViewController) forControlEvents:UIControlEventTouchUpInside];
[backButton setFrame:FRAME_DEFINE
[backButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
[backButton setExclusiveTouch:YES];
[backButton setImage:[UIImage imageNamed:BACK_BUTTON_DEFAULT_ICON] forState:UIControlStateNormal];
[backButton setTitle:@"BACK" forState:UIControlStateNormal];
[backButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
UIBarButtonItem *backMenuBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backMenuBarButton;
Ответ 4
ну, вам нужно пойти с фоновым изображением и с заголовком и
// Creates a back button instead of default behaviour (displaying title of previous screen)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_arrow.png"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(backAction)];
tipsDetailViewController.navigationItem.leftBarButtonItem = backButton;
[backButton release];
Ответ 5
Я использую код как:
UIBarButtonItem *leftBar = [[UIBarButtonItem alloc] init];
leftBar.title = @"Back";//Details
self.navigationController.navigationBar.topItem.backBarButtonItem = leftBar;
Ответ 6
Для Swift, используя Erzekiel, в качестве основы для этого вы можете упростить его -
extension UIViewController {
func setBackButtonTitle(to title: String) {
let barButtonItem = UIBarButtonItem(title: title, style: .plain, target: self, action: nil)
self.navigationItem.backBarButtonItem = barButtonItem
}
}
Это нужно вызвать из родительского viewController, например, в viewWillDisappear -
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.setBackButtonTitle(to: "Back"))
}