2013-01-16 114 views
0

我被困在一個簡單的任務,我有我的uiviewcontroller的接口文件uilabel。我想通過一些方法更新該標籤。它不更新標籤。UILabel沒有更新它的文本,IOS

enter image description here

.h 
UIViewController 
{ 
    UILabel *pictureNameLabel; 
} 
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel; 

.m 
@synthesize pictureNameLabel=_pictureNameLabel; 
- (void)viewDidLoad 
{ 
     _pictureNameLabel = [[UILabel alloc] init]; 
     _pictureNameLabel.textColor=[UIColor blackColor]; 
     [email protected]"Try"; 
} 

我該如何解決這個問題?

回答

3

您不需要分配標籤。它已經活着,從筆尖醒來。

.h 
UIViewController 
{ 
    //UILabel *pictureNameLabel; 
} 
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel; 

.m 
@synthesize pictureNameLabel=_pictureNameLabel; 
- (void)viewDidLoad 
{ 
     //_pictureNameLabel = [[UILabel alloc] init]; 
     _pictureNameLabel.textColor=[UIColor blackColor]; 
     [email protected]"Try"; 
} 
+2

你不僅需要它,而且實際上是指向一個實際上不在屏幕上的新標籤(與分配不同,這只是浪費內存,而是將指針重新分配給標籤),然後更新那。你打破了與你的出路的連接。 –

+0

@DavidRönnqvist我以同樣的方式分配UIWebview,它的工作原理他們之間有什麼區別,我怎麼能確定一個UI元素需要分配? –

+1

您只在未將UI元素添加到筆尖時才分配UI元素,並且您希望以編程方式將它們加載到視圖中。 – estobbart

-1

您的標籤已經存在於您的xib文件中,並且您可以在界面bulider上設置textcolor,text。

+0

我知道我想用各種動作更新標籤的文字 –

2

你的直接問題是線路:

_pictureNameLabel = [[UILabel alloc] init]; 

-ViewDidLoad。它創建了一個新變量變量,並且該變量具有pictureNameLabel屬性,從而導致您失去對在Interface Builder中創建的引用的引用。刪除該行,並且一切都應該正常工作。

如果您已經通過Interface Builder創建了一個元素,您不需要自己分配& init,並將它添加到適當位置的視圖中,因爲它自動爲您完成,並且屬性已經存在設置指向它。如果您手動創建新視圖,則需要這樣做......但您還需要將其添加到視圖層次結構中的某個位置作爲子視圖。

與您的問題無關,但您也創建了一個名爲UILabel *pictureNameLabel;的變量。我假設你創建了這個變量作爲綜合屬性pictureNameLabel的支持變量......但是,你將其合成爲_pictureNameLabel,這意味着你現在有兩個變量,_pictureNameLabelpictureNameLabel。這幾乎肯定是一個錯誤。您應該刪除pictureNameLabel的手動定義,或者如果您實際打算將其與名稱相同的屬性分開使用,則應將其重命名爲distinct。有可能只是導致混淆&錯誤的道路。

+0

好的解釋我認爲,如你所說,他需要刪除該變量並閱讀更多關於此主題的內容http://www.hongkiat.com/blog/ios-development -guide - 第1部分/ –