2010-03-28 60 views

回答

12

不,UILabel類沒有實現NSCopying協議。如果你想爲所有的視圖添加相同的視圖,也許繼承自定義視圖是最好的方法。

-13

copy方法可被任何來自NSObject繼承,所以我的第一個停靠港將只是嘗試

UILabel *second = [first copy]; 

然而,這可能不是按預期100%,一些的UILabel propertiesmight不會被複制你想要什麼。如果沒有,您可以嘗試使用NSCoding方法 - 對對象進行編碼,然後將其解碼爲新對象?

它可能是更容易通過手雖然做到這一點;)

山姆

+1

如上所述,這是行不通的。你會得到這樣的錯誤: '「NSInvalidArgumentException」的,理由是:「 - [的UILabel copyWithZone:]:無法識別的選擇發送到實例0x7b959d0'' – Besi 2011-10-27 12:07:53

+0

是的,大量的對象做到這一點,這真是煩人:(我的下一個建議到OP將是創建一個實現NSCopying,併產生一個新的UILabel類:)不幸的是在此之前有人提供了一個不同的答案是解決了這個問題:) – deanWombourne 2011-10-27 14:30:55

0

正如@starkhalo說,UILabel不符合NSCopying。所以你不能在UILabel中使用複製方法。

iPhone文檔爲NSObject清清楚楚地寫着 -

NSObject本身並不支持NSCopying協議。子類必須支持該協議並實施copyWithZone:方法。

-1

您可以爲該標籤設置一個單獨的XIB,並致電[[NSBundle mainBundle] loadNibNamed:@"LabelNib" owner:self options:nil];將該筆尖的文件所有者設置爲您的委託類,並進行正確的連接。現在你可以將標籤添加到您的視圖需要很多次,修改每一個(用一個for循環,例如)。

相關問題