如何在 UiView 中显示 AlertController
How to display AlertController in UiView
Swift 的新手。下面的代码执行时没有错误,但在控制台中显示一条消息。这是一条错误消息以及如何解决?送审时是否需要修复
谢谢
这是我的应用程序结构:
VC(1) --> goto --> VC(2)
在 VC(1) 我有:
- BtnGo
- UiLabelMsg
- UitableView
我创建了一个 Link 到 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; layer
= 's windows is not equal to 's View's Window!
我有这些问题
为什么我使用prepareForSegue
时不需要为BtnGo写代码?
如果我有超过 2 个按钮?这 2 个将由 Segue 处理?
UIView
没有presentViewController
方法,self
是什么?您可以使用 UIView
的 window 来演示。
let alert = UIAlertController(title: "Alert", message: "No Selection made", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.window?.rootViewController?.present(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
}
}
Swift 的新手。下面的代码执行时没有错误,但在控制台中显示一条消息。这是一条错误消息以及如何解决?送审时是否需要修复
谢谢
这是我的应用程序结构:
VC(1) --> goto --> VC(2)
在 VC(1) 我有:
- BtnGo
- UiLabelMsg
- UitableView
我创建了一个 Link 到 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; layer = 's windows is not equal to 's View's Window!
我有这些问题
为什么我使用prepareForSegue
时不需要为BtnGo写代码?
如果我有超过 2 个按钮?这 2 个将由 Segue 处理?
UIView
没有presentViewController
方法,self
是什么?您可以使用 UIView
的 window 来演示。
let alert = UIAlertController(title: "Alert", message: "No Selection made", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.window?.rootViewController?.present(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
}
}