Swift的新手。下面的代码执行没有错误,但在控制台中它显示一条消息。这是一条错误消息以及如何修复它?发送应用以供审核时是否需要修复。
由于
这是我的App结构:
VC(1) --> goto --> VC(2)
在VC(1)中我有:
我创建了一个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处理?
答案 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
}
}