web-dev-qa-db-fra.com

Popup UIViewController

J'essaie de créer une fenêtre contextuelle qui sera présentée en appuyant sur un bouton. J'ai essayé de suivre les instructions que j'ai trouvées dans Google mais ma vue pop présentant en plein écran et son arrière-plan est noir. Voici mon code:

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {

    @IBAction func someButtonPressed(sender: UIButton) {
        let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let popupVC = storyboard.instantiateViewControllerWithIdentifier("hello") as! popupViewController
        popupVC.modalPresentationStyle = .Popover
        popupVC.preferredContentSize = CGSizeMake(300, 300)
        let pVC = popupVC.popoverPresentationController
        pVC?.permittedArrowDirections = .Any
        pVC?.delegate = self
        pVC?.sourceView = sender
        pVC?.sourceRect = CGRect(x: 100, y: 100, width: 1, height: 1)
        presentViewController(popupVC, animated: true, completion: nil)
    }
}

Qu'est ce que je fais mal?

9
Ookey

Pour que votre contrôleur de vue s’affiche comme une fenêtre contextuelle, vous devez définir les éléments suivants:

popupVC.modalPresentationStyle = .OverCurrentContext
popupVC.modalTransitionStyle = .CrossDissolve

Vous devez également définir la position et la taille de votre contrôleur de vue pour qu’il ressemble à un popup.

Voici mon popup que j'ai fait avant.

 enter image description here

25
Tien

Au contrôleur parent:

let vc = ViewController()
vc.modalPresentationStyle = .overCurrentContext
vc.modalTransitionStyle = .crossDissolve
present(vc, animated: true, completion: nil)

Sur le contrôleur contextuel, utilisez ceci pour activer l’affichage du contrôleur parent en arrière-plan:

self.definesPresentationContext = true

N'oubliez pas de définir un fond translucide sur votre contrôleur contextuel.

- Référence de: Présentation d'un contrôleur de vue popup par programme - Reddit -

0
karenms