2011-08-12 31 views
0

我有一個奇怪的問題。我有一個標籤欄應用程序。當我想用任何方法設置UILabel的文本時,不會發生任何事情。無法編輯方法中的任何對象

例如,只能自認倒黴「LABEL1」發生在我調用這個方法:

-(void)setOne:(NSMutableArray *)theArray { 
label1 = [[UILabel alloc] init]; 
label1.text = @"Test"; 
} 

有沒有人有這個問題的解決方案?

感謝,

耶勒

+0

已經聲明在.h文件中的LABEL1? – PJR

+0

是的,我沒有聲明label1 – Jelle

+0

你有沒有在接口生成器中連接它? – PJR

回答

2

當調用此方法創建一個新的標籤,並預先用這個伊娃丟失相關聯的標籤的連接。這也可能是內存泄漏。

編輯:

根據您的代碼的其餘部分,這可能是工作:

-(void)setOne:(NSMutableArray *)theArray { 
    label1.text = @"Test"; 
} 
1

你看不到任何東西發生,因爲你創建的標籤新實例,不添加它任何地方。如果您真的想爲視圖添加新標籤,請使用適當的框架創建並實際添加到某個視圖,例如

-(void)setOne:(NSMutableArray *)theArray { 
    label1 = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 200.0f, 30.0f)]; 
    label1.text = @"Test"; 
    [self.view addSubview: label1]; 
    // And do not forget to release your label! 
    [label1 release]; 
} 

如果要更改已存在不你的方法創建新實例標籤的文本,剛剛成立的新文本,使其:(從更多的信息:

-(void)setOne:(NSMutableArray *)theArray { 
    // if label1 already exists we don't need to create a new one 
    label1.text = @"Test";  
} 

編輯

評論)

當您創建視圖控制器可能無法加載它的直接視圖,以便在你的代碼

FirstViewController *FVC = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
[FVC setOne:[resultaten objectAtIndex:indexPath.row]]; 

當您調用setOne方法時,fvc的視圖可能仍然不會被加載,並且label1在該方法中仍然爲零。您可以解決迫使控制器的視圖來加載,下面應該工作:

FirstViewController *FVC = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
FVC.view; 
[FVC setOne:[resultaten objectAtIndex:indexPath.row]]; 

但總的來說我建議你值存儲在一些類,在單獨的變量是從UI(即模型)獨立或至少您的控制器並將其設置爲UI元素時,才實際加載或出現在屏幕上(在viewDidLoad中或viewWillAppear中的方法)

+0

謝謝,但這種解決方案不起作用。當我嘗試它時,UILabel沒有改變。 – Jelle

+0

@Jelle你如何創建你的標籤?如果使用IB添加它,請確保它已正確連接到視圖控制器中的某個IBOutlet(確保它在setOne方法中不爲零)。 – Vladimir

+0

是的,我使用IB添加它並將它連接到我的視圖控制器中的IBOutlet。 – Jelle

0
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 22)]; 
    lbl.text [email protected]"Hello"; 
    [self.view addSubview:lbl]; 

}