2014-11-04 39 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

相關問題