在SWIFT中为UIAlertController设置标签?

时间:2014-11-04 09:10:21

标签: ios swift uialertcontroller

如何在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中为警报视图设置标签。有人可以帮我这个。提前谢谢。

2 个答案:

答案 0 :(得分:5)

UIAlertController没有属性tag。提示是错误“'UIAlertController'没有名为'tag'的成员。”

UIAlertController不是UIView的子类,而是UIViewController的子类。

尽管使用tag几乎没有理由,即使它可用。

您可能想要的是将其设置为属性。

答案 1 :(得分:5)

我喜欢@Fogmeister的回答,并希望添加:

您希望在警报视图上使用tag的唯一原因是识别它,以便您可以区分哪一个正在调用委托方法(没有在属性中存储每个潜在的开销并检查所有指针)。这不是理想的,但它是一个快速的解决方案,并且如前所述,它通常是某种黑客。

整个委托方法在UIAlertController中被替换为基于块的接口,因此不再需要使用tag。您提供给警报操作的块可以使用专用代码引用self,并且可以捕获您需要的任何局部变量,因此不需要执行您之前使用过标记的相同操作。< / p>