2016-09-03 4 views
1

Ich werde ähnliche Eigenschaften auf alle meine Navigation Controller in den verschiedenen View-Controller mit Ausnahme einiger Navigationselemente und natürlich die Titel verwenden.swift - UINavigationController Erweiterung funktioniert nicht

Ich habe eine Erweiterung geplant, um es anrufen zu können und meine Standardeinstellungen zu haben; es macht jedoch nichts. Der Code funktioniert, wenn ich ihn einfach in die eigentliche Klasse lege, aber nicht, wenn ich die SetDefaults aufruft.

Erweiterungen:

extension UINavigationController { 
    func setDefaults(titleText: String){ 
     let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 

     //Set title label 
     let label = UILabel() 
     label.font = UIFont(name: appDel.regularDefaultFont, size: 16) 
     label.text = titleText 
     label.kern(1.0) 
     label.sizeToFit() 
     self.navigationItem.titleView = label 

     //Set white background tint color 
     self.navigationBar.barTintColor = UIColor.whiteColor() 

     //Set navigation bar bottom line 
     let bottomBorderRect = CGRect(x: 0, y: UIScreen.mainScreen().bounds.height, width: UIScreen.mainScreen().bounds.width, height: 1) 
     let bottomBorderView = UIView(frame: bottomBorderRect) 
     bottomBorderView.backgroundColor = UIColor(r: 250, g: 250, b: 250) 
     navigationBar.addSubview(bottomBorderView) 
    } 
} 

Anruf zu SetDefaults von Klasse mit einem Navigation:

self.navigationController.SetDefaults("Login") 
+0

Können Sie einen Haltepunkt in der Verlängerung eingestellt und sehen, ob es erreicht wird? – kabiroberai

+0

stellen Sie sicher, dass Sie 'setDefaults' auf dem rechten Navigationscontroller aufrufen. Wenn Sie UISplitViewController verwenden, ist die eigene Navigationssteuerungseigenschaft des View-Controllers möglicherweise nicht die auf dem Bildschirm – Luke

+0

kabiroberai, ich habe es versucht und es kommt dorthin. @Luke Ich rufe die setDefaults im View-Controller auf, den ich gerade gezeigt habe. Ist das richtig? Überprüfen Sie meinen Kommentar zu der Antwort unten, um den Code anzuzeigen, den ich verwende, um den Ansichtscontroller anzuzeigen. – Walker

Antwort

0

In Ihrem Storyboard Sie Segue Typen show beim Anschließen eines View-Controller auf die anderen oder einfach wählen sollten wähle deinen übergang> im attributesinspektor> storybook segue> kind> zeige (zB) push. wie in diesem Bild gezeigt

enter image description here

Es wird das Problem dauerhaft lösen :)

+0

Faiz, ich zeige den View-Controller durch Code. 'loginController = vcLogin() self.navigationController? .showViewController (loginController, sender: nil)' Auch ich rufe die Set-Standardwerte in der VCLogin-Controller .. ist das richtig? – Walker

+0

@Walker, Bitte überprüfen Sie meine neue Antwort und lassen Sie mich wissen, ob es funktioniert oder perfekte Lösung –

0

Ihr Code soll wie folgt aussehen werden.

let vcLogin = loginViewController(
      nibName: "loginViewController", 
      bundle: nil) 
     navigationController?.pushViewController(vcLogin, 
      animated: true) 

Hoffentlich funktioniert das wie ein Wasserstrom ...

+0

@Walker, haben Sie meinen Code gefolgt und funktioniert es jetzt auf Ihrer Seite? Bitte aktualisieren Sie mich über Ihr Feedback –

Verwandte Themen