2016-07-18 4 views
1

я, кажется, не в состоянии правильно настроить кнопку назад в navigationController программно, который показывает, когда предыдущий вид используетНастройка кнопки назад в навигационном контроллере

self.navigationController?.pushViewController(newView, animated: true) 

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

Любое понимание было бы оценено, так как ни один из ответов, которые я нашел, кажется, работает правильно. Также это делается без использования раскадровки

if let img = UIImage(named: "backButton") { 
       self.navigationController?.navigationBar.backIndicatorImage = img 
       self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = img 
       print("IMAGE") 
      } 
      topItem.backBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Rewind, target: self, 
                 action:#selector(self.backButtonAction(_:))) 
+0

Сделайте свое изображение на панели навигации или текст в ViewDidLoad или ViewWillAppear, а не в методе ViewDidAppear. – Suresh

+0

Он изменяется в viewDidAppear, должен ли он отображаться в ViewDidLoad? В предыдущем представлении навигационный контроллер полностью отличается, поэтому я использую viewDidAppear и viewDidDisappear, чтобы показать/скрыть UIView с помощью контроллеров и viewDidAppear в новом UIView, чтобы добавить простой заголовок и попытаться добавить функцию к кнопке «Назад» (которая появляется автоматически), чтобы просмотреть вид – kdgwill

ответ

1

В вашем случае добавьте пользовательскую кнопку в навигацию.

class YourViewController: UIViewController { 
//Navigation Items. 

//left bar button item. 
private var leftBarButtonItem : UIBarButtonItem! 

//left button. 
private var navigationLeftButton : UIButton! 

//Your other variable/object declaration. 

    func viewDidLoad() { 
    super.viewDidLoad() 
    self.leftBarButtonItem = UIBarButtonItem() 
    } 

    func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     self.setNavigationBackButton() 
    } 



    private func setNavigationBackButton() { 

    if(self.navigationLeftButton == nil) { 
     self.navigationLeftButton = UIButton(type: UIButtonType.System) 
    } 


    //Styling your navigationLeftButton goes here... 

    self.navigationLeftButton.addTarget(self, action: Selector("backButtonTapped"), forControlEvents: UIControlEvents.TouchUpInside) 
    self.leftBarButtonItem.customView = self.navigationLeftButton 
    self.navigationItem.leftBarButtonItem = self.leftBarButtonItem 
    } 

    func backButtonTapped(AnyObject:sender) { 
    // Here add your custom functionalities. 
    // Note, this will not pop to previous viewcontroller, 

    } 
} 
+0

Это сработало отлично; Я предположил, что смогу воспользоваться кнопкой «Назад» в контроллере навигации, так как она не вернула нуль, но попала в некоторые проблемы. спасибо – kdgwill

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