這可能是我的一個愚蠢的錯誤,但我有3個UIbuttons,其中2個默認隱藏,1個應該在點擊時顯示2個其他人。我把這種方法在我viewDidLoad中:UIButton沒有正確設置alpha
-(void) initButtons
{
self.checkbutton = [[UIButton alloc] initWithFrame:CGRectMake(20, 330, 80, 70)];
self.checkbutton.backgroundColor = [UIColor clearColor];
[self.checkbutton setBackgroundImage:[UIImage imageNamed:@"checkbutton"] forState:UIControlStateNormal];
self.checkbutton.enabled = NO;
self.checkbutton.alpha = 0.0;
[self.view addSubview:self.checkbutton];
self.xbutton = [[UIButton alloc] initWithFrame:CGRectMake(230, 330, 70, 70)];
self.xbutton.backgroundColor = [UIColor clearColor];
[self.xbutton setBackgroundImage:[UIImage imageNamed:@"X.png"] forState:UIControlStateNormal];
self.xbutton.enabled = NO;
self.xbutton.alpha = 0.0;
[self.view addSubview:self.xbutton];
}
,並點擊我的可見按鈕時,這種方法被稱爲:
-(void) showbuttons
{
self.checkbutton.enabled = YES;
[[self checkbutton] setAlpha:1.0];
self.xbutton.enabled = YES;
[[self xbutton] setAlpha:1.0];
NSLog(@"xbutton alpha: %f", [[self xbutton] alpha]);
NSLog(@"checkbutton alpha: %f", [[self checkbutton] alpha]);
}
什麼情況是,當我點擊可見按鈕,只出現1按鈕。 (xbutton)它們應該以完全相同的方式編碼,我不知道什麼是錯的。我有NSLogs顯示這兩個按鈕的alpha值爲1.0。我確定我正確地使用了@propertied和@synthesized checkbutton,就像xbutton一樣。
我在做什麼錯?
此外,一個側面的問題:[checkbutton setAlpha]
和[self.checkbutton setAlpha]
之間有什麼區別?
呃......我的錯。我的圖像被命名爲checkmark.png,而不是checkbutton.png。感謝@DanielRHicks回答我的問題。
的'self'和參考'@ synthesized'性能的非'self'版本之間的差異是可以忽略的 - 第一個用途而第二個getter則直接引用實例變量。當然ASSIGNMENT的區別是很大的,因爲第一個管理保留(如果這樣定義的話),而第二個設置實例變量而沒有任何保留管理。 –
@Daniel當你說出任務時,你是指任何值的設置? (像setAlpha)或者只是當你分配和初始化它? – Cole
'self.object = someObject;'相當於'setObject(someObject);'。但是'object = someObject;'不等同於其他任何一個,並且如果屬性'object'被保留,那麼最後一個賦值將無法保留它(並且同樣無法保留屬性中的前一個值),導致到一個可能的存儲錯誤和崩潰。 –