Как добавить кнопку «назад» в UINavigationBar вручную? - PullRequest
3 голосов
/ 08 марта 2011

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

Ответы [ 4 ]

1 голос
/ 20 января 2019

Я хотел бы добавить ответ, но, к сожалению, у меня есть только правильный ответ в Swift.Я предоставлю это здесь для любого, кто придет на этот вопрос, ища ответ в Свифте.Предположим, вы хотите добавить кнопку «Назад» на панель навигации, чтобы перейти на последнюю страницу.Сделайте следующее:

    let button = UIBarButtonItem.init()
    button.title = "BACK"
    let attributes : [NSAttributedStringKey : Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue): UIFont.systemFont(ofSize: 15.0)]
    button.setTitleTextAttributes(attributes, for: .normal)
    button.target = self
    button.action = #selector(self.goBack)
    self.navigationItem.setLeftBarButton(button, animated: false)

Затем определите функцию (которая используется для селектора для действия кнопки выше):

@objc func goBack() {
    self.performSegue(withIdentifier: "myUnwindSegue", sender: AnyObject.self) 
}

Обратите внимание, что здесь я использую раскручиваниенепосредственно перейти.Чтобы использовать функцию раскрутки, обратитесь к здесь или комментариям ниже, если у вас есть какие-либо вопросы.Разматывать сегменты могут быть сложными, когда вы впервые используете их, но после этого они великолепны.Также обратите внимание, что когда вы говорите «последняя страница», я предполагаю, что вы имеете в виду представление, уже добавленное в иерархию представлений.

0 голосов
/ 08 марта 2011

Панель управления не требуется для контроллера представления, которым управляет контроллер навигации. Вместо того чтобы пытаться подделать кнопку «Назад», используйте контроллер навигации для управления обоими контроллерами представления, и пусть первый контроллер скрывает панель навигации. Например, вы можете добавить что-то вроде:

[self.navigationController setNavigationBarHidden:YES animated:YES];

к методу -viewDidAppear контроллера. Сделайте что-то подобное для второго контроллера, передав NO для скрытого параметра, чтобы отобразить его снова.

В общем случае, однако, контроллер представления может добавить кнопку назад на панель навигации с кодом, подобным этому (предупреждение: непроверенный код набран из памяти, но вам следует начать):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];

При нажатии кнопки она отправляет свое действие (someAction) своей цели (self).

0 голосов
/ 24 мая 2011
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];

[button.titleLabel setFont:[UIFont boldSystemFontOfSize:11.0]];

[button setBackgroundImage:[UIImage imageNamed:@"back_norm.png"] forState:UIControlStateNormal];

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateSelected];

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateHighlighted];

[button setTitle:@" Back" forState:UIControlStateNormal];

[button setTitle:@" Back" forState:UIControlStateSelected];

[button setTitle:@" Back" forState:UIControlStateHighlighted];

button.frame = CGRectMake(0, 0, 48, 30);

UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button];

self.navigationItem.leftBarButtonItem = back; 

[button release];

[back release];
0 голосов
/ 08 марта 2011

Вам нужно связать кнопку из Интерфейсного Разработчика с методом, который вы хотите вызывать при нажатии кнопки.Метод должен выглядеть следующим образом - (IBAction)backAction.Название метода зависит от вас, но вы должны объявить тип возвращаемого значения для IBAction, чтобы разработчик интерфейса знал, что с ним можно связать кнопку.

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