2015-07-30 2 views
2

Я хочу выполнить переход, когда я нажму кнопку «Назад». Для этого я делаю:Выполните повторное нажатие на кнопку «Назад»

override func didMoveToParentViewController(parent: UIViewController?) { 
    self.performSegueWithIdentifier("fromGalleryToBody", sender: self) 
} 

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

ответ

3

По умолчанию кнопка навигации дает вам функциональность, чтобы перейти к предыдущему виду

Вы можете проверить это:

override func didMoveToParentViewController(parent: UIViewController?) { 
    if parent == nil { 
     println("Back Pressed") 
    } 
} 

Но ситуация didMoveToParentViewController означает, что он уже перейти к предыдущему виду.

Вы можете добавить пользовательскую кнопку в качестве кнопки «Назад» в панели навигации. Тогда ваша проблема будет решена.

enter image description here


кнопку Добавить Программным:

let backButton = UIBarButtonItem(title: "Назад в будущее", style: .Plain, target: self, action: "toMainFromGallery") 
self.navigationItem.leftBarButtonItem = backButton 

Функция:

func toMainFromGallery { 
} 

Кнопка С Назад Икона:

var backButton = UIButton(frame: CGRectMake(0, 0, 70.0, 70.0)) 
var backImage = UIImage(named: "backBtn") 
backButton.setImage(backImage, forState: UIControlState.Normal) 
backButton.titleEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0.0) 
backButton.setTitle("Back", forState: UIControlState.Normal) 
backButton.addTarget(self, action: "buttonPressed", forControlEvents: UIControlEvents.TouchUpInside) 
var backBarButton = UIBarButtonItem(customView: backButton) 
self.navigationItem.leftBarButtonItem = backBarButton 

Там должно быть пространство между левым Если вы хотите, чтобы удалить его добавить распорку вроде как:

var spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) 
spacer.width = -15 

self.navigationItem.leftBarButtonItems = [spacer,backBarButton] 

Назад Иконка Изображение должно быть в 22px, 44px и 66px = @ 1x, @ 2x и 3x уважительно

+0

но я встраивать панель навигации, так что автоматически появится кнопка Назад. Я просто хочу изменить его –

+0

Я сделал это: 'let backButton = UIBarButtonItem (название:« Назад в будущее », стиль: UIBarButtonItemStyle.Plain, target: navigationController, действие:« toMainFromGallery ») navigationItem.leftBarButtonItem = backButton', но он сбой с '[UINavigationController toMainFromGallery]: непризнанный селектор, отправленный в экземпляр –

+0

@OrkhanAlizade' target: self' - см. обновление –

1

проверьте пожалуйста. вот пример, который вам нужен.

Delegates and Segues in Swift или

вам нужно установить, как это в просмотре контроллер как сказал Эндрью.

Поместите этот код в View Controller вы хотите ловушку Назад кнопку вызова из:

override func didMoveToParentViewController(parent: UIViewController?) { 
    if (!(parent?.isEqual(self.parentViewController) ?? false)) { 
     println("Back Button Pressed!") 
    } 
} 

Внутри, если блок, обрабатывать все, что вам нужно передать обратно. Вам также потребуется вернуть ссылку на контроллер вызова, так как на данный момент, как правило, оба родителя и self.parentViewController равны нулю, поэтому вы не можете перемещаться по дереву диспетчера представлений.

Кроме того, возможно, вам удастся просто проконтролировать родительский для nil, так как я не нашел случай, когда нажатие кнопки «Назад» не приводило к тому, что родительский элемент был равен нулю.Так что-то вроде этого является немного более кратким:

override func didMoveToParentViewController(parent: UIViewController?) { 
    if (parent == nil) { 
     println("Back Button Pressed!") 
    } 
} 

более подробно смотрите этот ответ Segue on Backbutton

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