2017-02-14 4 views
-1

Ich versuche, einen ViewController (in einem NavigationController eingebettet) von einer Schaltfläche in einem TableViewController zu präsentieren. Der dargestellte ViewController sollte halb so hoch sein wie der TableViewController. Ich habe es mit dem folgenden Code versucht, aber es scheint nicht zu funktionieren (Swift 3). Kann jemand freundlich helfen? Vielen Dank!Presently Modal nicht Größenanpassung View

class AddNewRecipeTableViewController: UITableViewController, UIViewControllerTransitioningDelegate { 
    @IBAction func popUpTest(_ sender: Any) { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let pvc = storyboard.instantiateViewController(withIdentifier: "popUpTest") as! UINavigationController 

     pvc.modalPresentationStyle = UIModalPresentationStyle.custom 
     pvc.transitioningDelegate = self 
     self.present(pvc, animated: true, completion: nil) 
    } 

    func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController? { 
     return HalfSizePresentationController(presentedViewController: presented, presenting: presentingViewController) 
    } 
} 

class HalfSizePresentationController : UIPresentationController { 
    override var frameOfPresentedViewInContainerView : CGRect { 
     return CGRect(x: 0, y: 0, width: containerView!.bounds.width, height: containerView!.bounds.height/2) 
    } 
} 

Antwort

0

Sie haben:

func presentationControllerForPresentedViewController(
    presented: UIViewController, 
    presentingViewController presenting: UIViewController!, 
    sourceViewController source: UIViewController) 
    -> UIPresentationController? { 

Diese Methode wird nie genannt werden, weil in Swift 3 es jedem Verfahren entspricht nicht das Cocoa kennt. (Ich bin überrascht, Sie berichten nicht eine Warnung vom Compiler darüber zu bekommen.)

Sie wahrscheinlich presentationController(forPresented:presenting:source:) implementieren gemeint, wie folgt aus:

func presentationController(
    forPresented presented: UIViewController, 
    presenting: UIViewController?, 
    source: UIViewController) 
    -> UIPresentationController? { 

Aber auch das wird nicht genannt werden, weil Sie die modalPresentationStyle des präsentierten View-Controllers nicht auf .custom eingestellt haben.

+0

danke, das hat funktioniert! – Albert

+0

Ausgezeichnet, danke für Ihre Rückmeldung. – matt

Verwandte Themen