2017-02-14 66 views
-1

我想展示一個ViewController(嵌入在NavigationController中)從一個TableViewController內的按鈕。呈現的ViewController應該是TableViewController的一半高度。我試過下面的代碼,但它似乎並沒有工作(Swift 3)。有人可以幫助嗎?謝謝!目前Modally非調整大小視圖正確

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) 
    } 
} 

回答

0

您有:

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

這種方法不會被調用,因爲斯威夫特3不對應於可可知道的任何方法。 (我驚訝,你不報告正從這個編譯器警告。)

你可能是爲了執行presentationController(forPresented:presenting:source:),像這樣:

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

但即使這樣,也不會叫,因爲您尚未將呈現的視圖控制器的modalPresentationStyle設置爲.custom

+0

謝謝你,工作! – Albert

+0

非常好,謝謝你回報。 – matt