2017-07-18 1 views
0

Je souhaite afficher un contrôleur de vue dans un contrôleur de vue. J'utilise le popup segue pour faire ça. Les paramètres des contrôleurs de deuxième vue sont comme ci-dessous et mais il apparaît en plein écran de toute façon.Popup s'affiche en plein écran

func tappedView3() { 
    // get a reference to the view controller for the popover 
    let popController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popoverId") 

    // set the presentation style 
    popController.modalPresentationStyle = UIModalPresentationStyle.popover 

    // set up the popover presentation controller 
    popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up 
    popController.popoverPresentationController?.delegate = self 
    popController.popoverPresentationController?.sourceView = m_tumgun // button 
    popController.popoverPresentationController?.sourceRect = m_tumgun.bounds 

    // present the popover 
    self.present(popController, animated: true, completion: nil) 
} 

// UIPopoverPresentationControllerDelegate method 
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { 
    // Force popover style 
    return UIModalPresentationStyle.none 
} 

enter image description here

+0

https://stackoverflow.com/a/39975346/1702413 – TonyMkenu

Répondre

0
+0

Je ne suis pas au courant de containerview mais mon problème est que j'ouvre la seconde vue via un bouton et que ce bouton disparaît quand la nouvelle vue de conteneur s'ouvre. Comme j'ai cherché, par exemple ce bouton devrait être toujours en vue. –

+0

@ EmreÖnder, Container View est juste vue. Vous pouvez l'ajouter en tant que sous-vue de votre contrôleur de vue principal. –

0
class TablePopupController: UIViewController { 
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    self.modalPresentationStyle = .overCurrentContext 
    self.modalTransitionStyle = .crossDissolve 
} 
required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 
/// to touch button which pressed 
/// 
/// - Parameter sender: button presse 
@IBAction func toDismissView(_ sender: AnyObject) { 
    self.handler!(nil) 
    self.dismiss(animated: true, completion: nil) 
} 

vous pouvez l'utiliser dans un autre contrôleur en suivant la ligne

let lifeStyleTablePopup = TablePopupController(nibName: NibName.TablePopupController.rawValue, bundle: nil) 
self.present(self.lifeStyleTablePopup, animated: true, completion: { 
}) 

J'espère que cela vous aide