UIButton nil - IOS

时间:2012-08-21 10:10:30

标签: iphone ios uibutton

我的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正在合成并具有自己的属性(保留)。

5 个答案:

答案 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”作为成员)