web-dev-qa-db-de.com

Swift-Navigationsleisten-Schaltfläche und Titel werden nicht angezeigt

Ich möchte eine Navigationsleiste über meiner App erstellen. Ich habe einen Navigationscontroller erstellt -> Registerkarten-Controller -> Navigationscontroller -> Table Controller

  1. Ich habe ein Bar Button-Element oben rechts gezogen.
  2. Ich habe den Titel in der Mitte des Table Controllers doppelt angeklickt und einen Text geschrieben.
  3. Ich habe es auch mit diesem Code im viewDidLoad () meines Controllers versucht:

    self.navigationController.navigationBar.topItem.title = "some title"
    self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)
    self.navigationItem.title = "YourTitle"
    

Nichts hat funktioniert - was mache ich falsch? : /

17
Joe

Sie können so etwas versuchen:

self.title = "Your Title"

var homeButton : UIBarButtonItem = UIBarButtonItem(title: "LeftButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

var logButton : UIBarButtonItem = UIBarButtonItem(title: "RigthButtonTitle", style: UIBarButtonItemStyle.Plain, target: self, action: "")

self.navigationItem.leftBarButtonItem = homeButton
self.navigationItem.rightBarButtonItem = logButton
34
Va Visal

Ich glaube, Sie suchen eine titleView.

Versuchen:

var navBarTitleView = UIView(frame: CGRectMake(0.0, 0.0, self.view.frame.width, 44.0))
navBarTitleView.backgroundColor = UIColor.brownColor()
self.navigationItem.titleView = navBarTitleView
2
Katafalkas

Ich bin mir ziemlich sicher, dass Sie den Titel Ihres Table Controllers einfach in viewDidLoad einstellen können. Dies ist der Titel, der in Ihrer Navigationsleiste angezeigt wird. 

diese Antwort erklärt eine etwas andere Frage, aber das Konzept ist dasselbe:

https://stackoverflow.com/a/25167491/2070902

1
robotwholearned

wenn Sie Ihre "UINavigationBar" nach Ihren Wünschen einstellen möchten, folgen Sie bitte diesem sehr sicher, es ist so einfach in Swift-Sprache, ich hoffe, es wird Ihnen sehr helfen.

SCHRITT 1:-

Erstellen Sie eine Kategorieklasse in Swift, gehen Sie einfach auf "New file" und fügen Sie "Simple Swift class" hinzu und geben Sie den Namen "MyCustomNavBarCategory.Swift"  

SCHRITT 2:-

Einfach "Reinige die Klasse (entferne den gesamten Code aus dieser Klasse)" und "Füge meinen Code unten ein" : -

// Klasse wird von unterhalb der Zeile beginnen Kopie von hier aus starten

lass SCREEN_HEIGHT = UIScreen.mainScreen (). bounds.size.height

uIKit importieren

erweiterung UINavigationBar {

//First increase navigation bar height .
override public func sizeThatFits(size: CGSize) -> CGSize {
    NSLog("%f", SCREEN_HEIGHT*0.06);

    let newSize:CGSize = CGSizeMake(self.frame.size.width, SCREEN_HEIGHT*0.10)
    return newSize;
}

//then set layOut of your Custom Nav for several objects like titleview,buttons and all
public override func layoutSubviews() {
   for var view in self.subviews
    {
        NSLog("view %@", view);
        let str :String = view.classForCoder.description();
       if(str == "UILabel")
        {
              //play with title view frame
            var f       = view.frame;
            f.Origin.y  = self.frame.size.height/2 - view.bounds.size.height/2  ;
            view.frame  = f;
            view.backgroundColor = UIColor.greenColor();
        }
        else if(str == "UIButton")
        {

             //play with buttons of navigation bar  view frame
            var f = view.frame;
            f.Origin.y = (self.frame.size.height/2)  - (view.bounds.size.height/2) ;
            view.frame = f;
            view.backgroundColor = UIColor.greenColor();
        }
    }
}

}

// class endet am oberen Rand stop copy code in der oberen Zeile und hinter diesen in Ihrem "MyCustomNavBarCategory.Swift" . das ist es geniessen;). 

SCHRITT 3: - Jetzt können Sie jedem Objekt von UINavigationBar in dieser Klasse einen beliebigen Frame zuweisen "Es ist eine sehr mächtige Kategorie von UINavigationBar, wenn Sie es vorsichtig implementieren"

0