2017-09-14 6 views
0

J'ai un UISplitViewController avec un MasterViewController et un DetailViewController.SplitViewController chevauchement de boutons

Dans mon MasterViewController j'ajoute un bouton avec une action cible assignée et il fonctionne tout bien ... MAIS:

Je veux que mon bouton pour être centré sur la frontière entre MasterViewController et DetailViewController. Mais la moitié du bouton disparaît simplement .. J'ai déjà expérimenté avec zPosition dans la couche etc .. mais cela n'a pas fonctionné.

Quelqu'un pourrait-il m'aider ici?

Répondre

1

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:

  1. 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.

  2. 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") 
} 
+0

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? –

+1

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

+0

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? –