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:
Dies funktioniert, wenn Sie Taste aus viewDidLayoutSubviews() hinzufügen. Es funktionierte nicht von viewDidLoad() oder viewWillAppear().
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.
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")
}
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? –
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
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? –