我的viewdidload中有以下内容:
//Start/Pause Button
UIButton *buttonStart = [UIButton buttonWithType: UIButtonTypeCustom];
buttonStart.frame = CGRectMake(10,100,100,45);
[buttonStart setBackgroundImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[buttonStart addTarget:self action:@selector(pausePlayButtonTouched) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview: buttonStart];
我的选择方法:
[self.buttonStart setBackgroundImage:[UIImage imageNamed:@"start.png"] forState:UIControlStateNormal];
NSLog(@"%@", self.buttonStart);
null正在记录到控制台。不用说,按钮的图像没有被改变。
我的想法有什么问题?
btw buttonStart正在合成并具有自己的属性(保留)。
答案 0 :(得分:4)
您正在使用两者,通过属性访问的实例变量self.buttonStart
和本地变量buttonStart
。从实现文件中删除该按钮的声明,并将第一行更改为:
self.buttonStart = [UIButton buttonWithType: UIButtonTypeCustom];
答案 1 :(得分:4)
不需要像这样的buttonStart.Add目标的属性:
[buttonStart addTarget:self action:@selector(pausePlayButtonTouched:) forControlEvents:UIControlEventTouchUpInside];
现在您选择的方法是:
-(void)pausePlayButtonTouched:(id)sender
{
UIButton *btnPaused = sender;
NSLog(@"%@", btnPaused);
[btnPaused setBackgroundImage:[UIImage imageNamed:@"start.png"] forState:UIControlStateNormal];
}
答案 2 :(得分:0)
您是否在任何地方分配self.buttonStart?你的意思是
self.buttonStart = [UIButton buttonWithType: UIButtonTypeCustom];
而不是
UIButton *buttonStart = [UIButton buttonWithType: UIButtonTypeCustom];
答案 3 :(得分:0)
您应该从文件名中删除“.png”标记,即“暂停”,而不是“pause.png”。
答案 4 :(得分:0)
据我所知,buttonStart的分配缺失。
你设置了self.buttonStart = buttonStart; ?
声明UIButton * buttonStart = ...将阴影(在您的本地上下文中)由@property创建的任何创建成员(非原子,reatin)UIButton * buttonStart; (如果您使用LLVM 4.0+,您的属性声明将创建“UIButton * _buttonStart”作为成员)