2015-04-24 25 views
2

在故事板中,我有一個視圖控制器,它具有與另一個視圖控制器相關的視圖控制器,並使用「Present As Popover」。如果我不添加任何代碼,這將作爲id期望。故事板中的Popovers,如何處理代理

問題: 我需要讓委託工作,以便我可以從彈出窗口中獲取數據。我在popover中創建了委託。

我已經加入

class LoginView: UIViewController,UIPopoverPresentationControllerDelegate, UIPopoverControllerDelegate,KeypadDelegate 

我已經添加了功能,以我的主視圖控制器。

問題我已經是如何在segue上設置委託。

我曾嘗試

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "KeyPadLoad" 
     { 
      let popoverViewController = segue.destinationViewController as! UIViewController 
      popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover 
      popoverViewController.popoverPresentationController!.delegate = self 
     } 
    } 

的賽格瑞也在躍躍欲試地稱爲KeyPadLoad但是當代表職能應在酥料餅什麼叫發生。

我在做什麼錯

感謝

回答

3

你必須實現在呈現酥料餅的類UIPopoverPresentationControllerDelegateUIPopoverPresentationControllerDelegate協議的方法可讓您自定義基於彈出窗口的演示文稿的行爲。

如果你設置了一個SEGUE去酥料餅和你設置SEGUE爲Present as Popover那麼你的類必須是這樣的:

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     var popOver = segue.destinationViewController as! PopOverViewController 
     popOver.popoverPresentationController!.delegate = self   
    } 

    // Tells the delegate that the popover was dismissed. 
    func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) { 
     println("dismissed") 
    } 
} 

所在類別PopOverViewController只是一個UIViewController該處理酥料餅,沒有更多的,像這樣的代碼:

class PopOverViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

與上面的代碼,你應該可以看到消息:

dismissed 

每當PopOverViewController被解僱。

我希望這對你有所幫助。

+0

popOver.popoverPresentationController!.delegate = self 無法正常工作,但是如果我將其更改爲popOver.delegate = self,那麼它就像id期望的那樣工作。謝謝 –