这可能是我的一个愚蠢的错误,但我有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'被保留,那么最后一个赋值将无法保留它(并且同样无法保留属性中的前一个值),导致到一个可能的存储错误和崩溃。 –