提供自定义alertView / ViewController

时间:2015-12-30 18:35:52

标签: ios swift

我需要呈现(使用自定义动画)一个viewcontroller /" alertView"类似于我收到推送通知(voip call)时附带的图片。我们目前提供的标准alertView运行良好,因此这将是一个更新。

我想在故事板中创建IncomingCallAlertVC,然后使用我从推送通知收到的信息(名称,选项,铃声等)填充它 我这样做有些困难,并且想知道是否有人可以帮助我。

这就是我试图呈现它的方式:

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

这是viewcontroller:

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

at

self.mylabel.text = name

如何在不使用segues的情况下呈现ViewController并传递数据?

enter image description here

1 个答案:

答案 0 :(得分:1)

UIViewController的指定初始值设定项为init(nibName:bundle:)。创建视图控制器实例时,您只需创建该类的空白,哑的实例。使用指定的初始值设定项:IncomingCallAlertVC(nibName:"whatever", bundle:nil)

您遇到的另一个问题是您的myLabel电源插座无法连接(将nil),直到加载视图(这只是第一次发生)您访问控制器的view属性或手动调用loadView

<强>更新

根据您对@FelixSFD的评论,您仍应使用UIStoryboard.instantiateViewControllerWithIdentifier()制作视图控制器。您不必使用segue,但如果您从故事板创建程序集,这是正确的方法。