Vous voulez dire: Un bouton en haut de la ligne de séparation qui sépare la vue principale et la vue détaillée?
Ensuite, vous pouvez ajouter un bouton à la fenêtre directement à partir de l'un des contrôleurs Maître ou Détail. (Je ne suis pas sûr que ce soit une bonne pratique cependant.)
Vous devez considérer trois choses ici:
Cela fonctionne lorsque vous ajoutez le bouton de viewDidLayoutSubviews(). Cela ne fonctionnait pas avec viewDidLoad() ou viewWillAppear(). Lorsque le bouton est ajouté à partir de viewDidLayoutSubviews(), il y a des chances que cette méthode soit appelée plusieurs fois avec le bouton à créer plusieurs fois et laissant les instances de boutons plus anciennes fuites. Donc, vous pourriez penser à avoir une instance de classe pour le bouton où approfondir sur votre conception de l'application.
Agit sur la position (ou l'état) du bouton lorsque le périphérique tourne.
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")
}
Salut grâce, fonctionne comme prévu, mais: dans « testButtonTapped » je fais « pushViewController » et dans la prochaine viewcontroller le même bouton appears..how peut-il être? –
Ce bouton a été ajouté à la fenêtre, donc il sera là pour tout le cycle de vie. Veuillez mettre à jour votre logique pour gérer le bouton en fonction de vos besoins. – Rishi
ok merci pour votre réponse :) encore une chose, quand je reviens à la masterviewcontroller, les contraintes pour le bouton ont disparu ... pourquoi? et comment puis-je le résoudre? –