如何在swift中为警报视图设置标记。我无法设置标记alert.tag = 1
,如果我这样做,我会收到类似'UIAlertController' does not have a member named 'tag'
的错误。下面是我写的代码,
var alert = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "YES", style: UIAlertActionStyle.Default, handler:{ (ACTION :UIAlertAction!)in }))
alert.addAction(UIAlertAction(title: "NO", style: UIAlertActionStyle.Default, handler:{ (ACTION :UIAlertAction!)in }))
alert.tag = 1 // Error is shown here
self.presentViewController(alert, animated: true, completion: nil)
我们曾经在Obj-C中为警报视图设置标签。有人可以帮我这个。提前谢谢。
答案 0 :(得分:5)
UIAlertController
没有属性tag
。提示是错误“'UIAlertController'没有名为'tag'的成员。”
UIAlertController
不是UIView
的子类,而是UIViewController
的子类。
尽管使用tag
几乎没有理由,即使它可用。
您可能想要的是将其设置为属性。
答案 1 :(得分:5)
我喜欢@Fogmeister的回答,并希望添加:
您希望在警报视图上使用tag
的唯一原因是识别它,以便您可以区分哪一个正在调用委托方法(没有在属性中存储每个潜在的开销并检查所有指针)。这不是理想的,但它是一个快速的解决方案,并且如前所述,它通常是某种黑客。
整个委托方法在UIAlertController
中被替换为基于块的接口,因此不再需要使用tag
。您提供给警报操作的块可以使用专用代码引用self
,并且可以捕获您需要的任何局部变量,因此不需要执行您之前使用过标记的相同操作。< / p>