2017-09-14 3 views
0

Ich habe einen UISplitViewController mit einem MasterViewController und einem DetailViewController.SplitViewController Schaltfläche Überlappung

In meinem MasterViewController Ich füge eine Schaltfläche mit einer Ziel Aktion zugewiesen und es funktioniert alles gut ... ABER:

Ich möchte meine Taste an der Grenze zwischen MasterViewController und DetailViewController zentriert werden. Aber die Hälfte der Schaltfläche verschwindet einfach .. Ich habe bereits mit zPosition in Schicht usw. experimentiert .. aber es hat nicht funktioniert.

Kann mir hier jemand helfen?

Antwort

1

Sie meinen: Eine Schaltfläche oben auf der Grenze, die Master-Ansicht und Detailansicht rechts trennt?

Dann können Sie eine Schaltfläche direkt von einem der Master- oder Detail-Controller zum Fenster hinzufügen. (Bin mir nicht sicher, ob dies eine bewährte Methode ist zwar.)

Sie müssen hier drei Dinge beachten:

  1. Dies funktioniert, wenn Sie Taste aus viewDidLayoutSubviews() hinzufügen. Es funktionierte nicht von viewDidLoad() oder viewWillAppear().

  2. Da die Schaltfläche aus viewDidLayoutSubviews() hinzugefügt wird, besteht die Möglichkeit, dass diese Methode mehrmals aufgerufen wird, wenn die Schaltfläche mehrmals erstellt wird und die früheren Schaltflächeninstanzen verloren gehen. So könnten Sie denken, eine Klasseninstanz für Button zu haben, die sich auf Ihr Design der App auswirkt.

  3. Auf die Position (oder den Zustand) der Taste reagieren, wenn das Gerät rotiert.


override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    /// Have a precise logic to centre it 
    let rect = CGRect(x: 270, y: 200, width: 100, height: 30) 
    let button = UIButton(frame: rect) 
    button.setTitle("Test Button", for: .normal) 
    button.backgroundColor = UIColor.red 
    button.addTarget(self, action: #selector(MasterViewController.testButtonTapped(sender:)), for: .touchUpInside) 

    let window = self.view.window 
    window?.addSubview(button) 
    window?.bringSubview(toFront: button) 
} 

func testButtonTapped(sender: UIButton) { 
    debugPrint("Test button tapped") 
} 
+0

hey es Dank, funktioniert wie erwartet, aber: in "testButtonTapped" i do "Pushviewcontroller" und in der nächsten Viewcontroller derselben Taste appears..how kann das sein? –

+1

Diese Schaltfläche wurde zum Fenster hinzugefügt, sodass sie für den gesamten Lebenszyklus vorhanden ist. Bitte aktualisieren Sie Ihre Logik, um die Schaltfläche entsprechend Ihren Anforderungen entsprechend zu behandeln. – Rishi

+0

ok danke für deine antwort :) noch eine sache, wenn ich wieder zum masterviewcontroller komme, sind die einschränkungen für den button weg ... warum? und wie kann ich es lösen? –

Verwandte Themen