2017-08-15 1 views
0

ich eine UITableViewController haben, die in ein Navigation eingebettet ist, siehe unten:Navigation Controller Titelbild verschwindet

enter image description here

Und hier ist, wie ich in meinem Bild im Titel hinzugefügt:

navigationItem.titleView = UIImageView(image: Views.navigationBarLogo)

Allerdings habe ich einen anderen UITableViewController programmgesteuert erstellen und natürlich das Bild im Navigationscontroller würde verschwinden, gibt es eine Möglichkeit, das Bild ohne Wiederholung hinzuzufügen g mein Code oben.

Danke!

+0

sehen dies einmal https://stackoverflow.com/questions/39739660/how-to-use-an-image-logo-on-the-navigation-bar-instead-of-title –

Antwort

2

Das UINavigationItem ist spezifisch für einen einzelnen View-Controller. Die einzige Möglichkeit, das zu tun, was Sie möchten, wäre eine Basisklasse zu erstellen, die die titleView festlegt und dann alle gewünschten View-Controller in Ihrem Navigationscontroller von Ihrer Basisklasse erbt. Beispielbasisklasse:

class MyBaseClass: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
     self.navigationItem.titleView = UIImageView(image: Views.navigationBarLogo) 
    } 
} 
+0

Danke, und aus deiner Antwort, was ich visualisieren kann (da ich im Moment meinen Mac nicht bei mir habe), gehe zu meinem App-Delegaten und instanziiere meine 'MybaseClass' und einen' navigationController' und setze dessen Root-Controller 'MyBaseClass'. Danach müssen alle meine anderen View-Controller, die das anzuzeigende Logo benötigen, von "MyBaseClass" erben. richtig? Danke! ~ –

+0

Sie müssen Ihre Basisklasse nicht instanziieren. Stellen Sie nur sicher, dass alle View-Controller in Ihrer Navigations-Controller-Hierarchie, die Sie Ihre titleView anzeigen möchten, Ihre Basisklasse unterklassifizieren. Zum Beispiel sollte Ihre Klassendefinition mit etwas wie diesem beginnen: class MyViewController: MyBaseClass – bjd23

+0

Hallo, tut mir leid, aber ich bin immer noch verwirrt, wie man das richtig implementiert, können Sie bitte meinen Code speziell im App-Delegierten zeigen? Vielen Dank! –