2011-04-15 124 views
0

我試圖用兩個UIButton創建視圖。代碼編譯沒有任何錯誤,但按鈕沒有任何標籤,並且它們不能被點擊。 enter image description here嘗試使用2個UIButton創建視圖時出現問題

-(id)initWithTabBar { 

if ([self init]) { 
    self.title = @"Tab1"; 
    self.tabBarItem.image = [UIImage imageNamed:@"promoters.png"]; 
    self.navigationItem.title = @"Nav 1"; 
} 

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button setTitle:@"Button" forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(facebookAuthorize) forControlEvents:UIControlEventTouchDown]; 
[button setFrame:CGRectMake(10, 10, 100, 100)]; 

[self.view addSubview:button]; 

[button release]; 

UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button2 setTitle:@"Button" forState:UIControlStateNormal]; 
[button2 addTarget:self action:@selector(facebookLogin) forControlEvents:UIControlEventTouchDown]; 
[button2 setFrame:CGRectMake(110, 10, 100, 100)]; 

[self.view addSubview:button2]; 

[button2 release]; 

return self; 
} 

回答

1

不要釋放這些按鈕。它們被創建爲自動釋放對象。正如documentation描述:

你只釋放或自動釋放你自己 對象。如果您使用 方法,其名稱開始「黃金」, 「新」,「複製」,或「mutableCopy」

的這句話沒有出現在創造它,你需要的 對象所有權buttonWithType:,所以你不承擔責任,你可以安全地認爲它是autoreleased。

+0

哦,我明白了,so buttonWithType:是一個處理內存分配的靜態類方法嗎? – 2011-04-15 20:22:22

+0

我編輯了我的答案,參考文檔。 – 2011-04-15 20:28:54

0

正如前面提到的那樣,按鈕無法在withType時命名。使這些詞出現在uibutton中的代碼是:

UIButton *someButton=[[[UIButton alloc]initWithFrame:CGRectMake(140, 6, 175, 36)]autorelease]; 
[someButton addTarget:self action:@selector(facebookLogin) forControlEvents:UIControlEventTouchDown]; 
[someButton setTitle:@"Button" forState:UIControlStateNormal]; 
[self.view addSubview:someButton]; 
相關問題