2014-11-04 37 views
2

如何在swift中为警报视图设置标签。我无法设置标签alert.tag = 1,如果我这样做,我会得到类似'UIAlertController' does not have a member named 'tag'的错误。下面是我写的代码,在SWIFT中为UIAlertController设置标签?

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

你应该使用'handler'模块来执行一个按钮的动作。 'tag'标志不可用于'UIAlertController'。 – holex 2014-11-04 10:33:04

回答

4

我喜欢@Fogmeister的答案,并希望增加:

要在警报视图使用tag的唯一原因是为了识别它,这样就可以区分哪一个是调用的委托方法(没有将每个潜能存储在属性中并检查所有指针的开销)。这并不理想,但它是一个快速解决方案,正如前面所述,它通常是某种类型的破解。

整个代表团方法在UIAlertController中被一个基于块的接口所取代,所以不再需要使用tag。您提供给警报操作的块可以使用专用代码引用self,并且可以捕获您需要的任何本地变量,因此不需要执行与您以前可能使用标记相同的操作。

+0

这正是我想要做的。我想使用标签,因为我有2个警报视图,并且想要根据警报视图调用委托方法。现在,由于整个代表团的方式已经被取代,它变得顺利和简单。 非常感谢Mr.Wain的建议。我很感激。 – 2014-11-04 09:48:04

4

UIAlertController没有房产tag。提示出现错误“'UIAlertController'没有名为'tag'的成员”。

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

虽然有几乎没有理由使用tag,即使它可用。

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

+0

好的,我可以这样使用它。感谢您的建议。 – 2014-11-04 09:18:02

+2

+1。标签被荒谬地过度使用恕我直言。 – Anorak 2014-11-04 09:30:26

+2

在很多情况下,如果标签是非常有用的,例如,与同一个委托的多个tableviews,与委托的多个文本字段等... – holex 2014-11-04 10:38:11

相关问题