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