2015-12-30 52 views
1

我需要(與自定義動畫)呈現一個viewcontroller /「alertView」類似於附加的圖片,當我收到推送通知(VoIP呼叫)。我們目前提供了一個標準的alertView,它運行良好,所以這將是一個更新。目前的自定義alertView/ViewController

我想在故事板創建IncomingCallAlertVC,然後用我的推送通知(名稱,選項,鈴聲等) 我有一些困難,這樣做收到信息填充它,並想知道如果任何人都可以給我一隻手。

這是我正在試圖目前它:

let incomingCallAlertVC = IncomingCallAlertVC() 
incomingCallAlertVC.displayMessage("MACKLEMORE") 

這是視圖 - 控制:

class IncomingCallAlertVC: UIViewController { 


    @IBOutlet weak var mylabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.backgroundColor = UIColor.clearColor() 
     self.modalPresentationStyle = UIModalPresentationStyle.OverFullScreen 


    } 

    func displayMessage(name:String) { 
     self.mylabel.text = name 

     let delegate:UIApplicationDelegate = UIApplication.sharedApplication().delegate! 
     let window:UIWindow! = delegate.window! 
     window.rootViewController?.dismissViewControllerAnimated(false, completion: nil) 
     window.rootViewController!.presentViewController(self, animated: false, completion: nil) 

     UIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {() -> Void in 
      self.view.alpha = 1 
      }) { (Bool) -> Void in 
     } 
    } 

但我總是得到:

fatal error: unexpectedly found nil while unwrapping an Optional value 

self.mylabel.text = name 

如何顯示ViewController並傳遞數據而不使用segues?

enter image description here

+0

大概你在storyboard或.xib文件中設計了IncomingCallAlertVC。爲了使其出口初始化('mylabel'),您需要使用故事板或xib構建它。看起來像 –

+0

,就像'myLabel'有問題。它是否工作,如果你刪除這條線? – FelixSFD

+0

@FelixSFD它沒有標籤yes。我在附帶的IncomingCallAlertVC中帶有插座的故事板中創建了ViewController。我試着用不同的名字多次添加它。但總是相同的零誤差 – KML

回答

1

指定初始化爲UIViewControllerinit(nibName:bundle:)。當你創建視圖控制器實例時,你只是創建了一個空白的啞類實例。使用指定的初始值設定項:IncomingCallAlertVC(nibName:"whatever", bundle:nil)

你會碰到的另一個問題是,你的myLabel出口將不會連接(會nil),直到視圖被加載(這僅發生訪問控制器的view財產或loadView首次手動叫)。

更新

基於對@FelixSFD您的評論,你還是應該用UIStoryboard.instantiateViewControllerWithIdentifier()使視圖控制器。您不必使用segue,但如果您是從故事板創建程序集,則這是正確的方法。

+0

謝謝,我現在明白了。 OverCurrentcontext做了訣竅。 我不得不補充: self.view.backgroundColor = UIColor.clearColor() self.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext – KML