2016-04-24 3 views
0

У меня есть приложение, которое отображает webView веб-страницы. Веб состоит из главной страницы с большим количеством подстраниц. Когда я нахожусь на главной странице, я хочу, чтобы кнопка «Назад» навигации сохраняла поведение по умолчанию, возвращаясь к предыдущему контроллеру представления. Но когда веб-сайт находится на подстранице, я бы хотел, чтобы кнопка «Назад» навигации переместилась на основную веб-страницу.Перезаписать кнопку ios назад

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

+0

Вам нужно знать, как сделать тест для компонентов веб-просмотра, или вам просто нужно знать, как настроить его по умолчанию с помощью кнопки «Назад»? –

ответ

0

Проверить этот пост из:

Execute action when back bar button of UINavigationController is pressed

Нечто подобное должно делать, на ваш взгляд, код контроллера:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.hidesBackButton = true 
    let customBackButtonItem = UIBarButtonItem(title: "Back", style: .Bordered, target: self, action:#selector(customBackMethod(_:))) 
    self.navigationItem.leftBarButtonItem = customBackButtonItem 
} 

// @objc is so we can use #selector() up above 
@objc func customBackMethod(sender: UIBarButtonItem) { 
    if webView.canGoBack { 
     webView.goBack() 
    } 
} 

Обратите внимание, что вы, возможно, придется использовать UIBarButtonItem (изображение :, style :, target :, action :), если вы хотите получить обратный образ или UIBarButtonItem (customView :). Смотрите этот вопрос и ответ для более подробной информации: https://stackoverflow.com/a/36180934/892990

0

Подобный ответ KickimusButticus':

Если вы хотите более легко сделать это с помощью раскадровки и такое, вы можете подключить вашу кнопку назад к IBAction как так :

@IBAction func back() { 

} 

И иметь внутреннее тестирование для того, находится ли пользователь на подстранице webview. Если они есть, вы можете столкнуться с веб-просмотром. Если они находятся на главной странице, вы можете просто использовать кнопку «Назад», чтобы перейти к основному контроллеру представления, или использовать self.dismissViewControllerAnimated(true, completion: nil), чтобы закрыть этот контроллер.

+0

Я реализовал предложение KickimusButticus, и оно работает. Однако я считаю, что это выглядит более элегантно, поэтому я попробовал, но функция back() никогда не вызывается. Я думаю, что я подключил его правильно, так выглядит с маленьким кругом с задней точкой в ​​нем. Любое предложение о том, что я могу делать неправильно? – Gongevangen

+0

@Gongevangen, если вы подключили его правильно, тогда его следует вызывать всякий раз, когда вы нажимаете кнопку «Назад». Я предлагаю вам проверить, что у вас есть правильное соединение, посмотрев на соединение в инспекторе атрибутов. Возможно, попробуйте повторно подключить его и посмотреть, работает ли это. –

Смежные вопросы