如何在UiView中显示AlertController

时间:2015-05-26 04:38:28

标签: ios swift uiview uialertcontroller

Swift的新手。下面的代码执行没有错误,但在控制台中它显示一条消息。这是一条错误消息以及如何修复它?发送应用以供审核时是否需要修复。

由于

这是我的App结构:

VC(1)     -->  goto -->    VC(2)

在VC(1)中我有:

  • BtnGo
  • UiLabelMsg
  • 的UITableView

我创建了一个VC的链接(2):Control-Drag BtnGo to VC(2)

我将segue命名为:SegueToVC2

我想做什么

我需要将一个字符串传递给VC2。在通过之前检查用户是否进行了选择。

在PrepareForSegue中,

override func PrepareForSegue(segue:UIStoryboardSegue, sender: AnyObject!) {

    var strchk: String = UIlabelMsg.text!

    if strchk.isEmpty {

        var alert = UIAlertController(title: "Alert",message:" No Selection made",
           preferredStyle: UIAlertControllerStyle.Alert)

        alert.AddAction(UIAlertction(title: "OK",style:UIAlertActionStyle.Default,hanlder: nil))

        self.presentViewController(alert, animated: true, completion: nil ) 

    } else {

    if (segue.Identifier =="SegueToVC2") {

        var targetVC = segue.destinationViewControl as! VC2
        targetVC.strMsg = UILabelMsg.text
    }
}

问题

在控制台中,它显示了这个:

  

UIView:0x7fdfc25668c0; frame =(0,0,375,667); autoresize = w + h;层   =' s窗口不等于查看窗口!

我有这些问题

当我使用prepareForSegue时,为什么我不需要为BtnGo编写代码? 如果我有超过2个按钮?这两个将由Segue处理?

1 个答案:

答案 0 :(得分:5)

UIView没有presentViewController方法,self是什么?您可以使用UIView窗口进行演示。

var alert = UIAlertController(title: "Alert",message:" No Selection made",
    preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK",style:UIAlertActionStyle.Default,handler: nil))
self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)

编辑:可能需要覆盖shouldPerformSegueWithIdentifier以检查UIlabelMsg.text

override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
    var strchk: String = UIlabelMsg.text!
    if strchk.isEmpty {
        var alert = UIAlertController(title: "Alert",message:" No Selection made",
        preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "OK",style:UIAlertActionStyle.Default,handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)

        return false
    } else {
        return true
    }
}