更改UIButton背景图片的问题

时间:2011-09-25 05:47:49

标签: iphone objective-c ipad uibutton

我有以下代码,基本上只是初始化UIButton。

self.button = [[UIButton alloc] init];
    self.button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
    self.button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
   [self.voteSpot setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self.voteSpot setBackgroundImage:[UIImage imageNamed:@"MainButton-Selected.png"] forState:UIControlStateSelected];
    [self.button addTarget:self action:@selector(button) forControlEvents:UIControlEventTouchUpInside];

    CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
    if (heightDifference < 0)
        self.button.center = self.tabBar.center;
    else
    {
        CGPoint center = self.tabBar.center;
        center.y = center.y - heightDifference/2.0;
        self.button.center = center;
    }

    [self.view addSubview:self.button];

当我按下按钮时我想要更改按钮背景,所以在目标中我有以下内容:

- (void) button
{

    [self setSelectedViewController:[self.viewControllers objectAtIndex:1]];
    [self setTabBarWithImage:[UIImage imageNamed:@"Map-Profile.png"]];
}

问题在于,当应用程序首次加载时,我必须按两次按钮才能进行背景更改..为什么会这样?我第一次点击按钮时这不会改变按钮背景图像。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不确定问题是什么,但我首先要使用+buttonWithType代替+alloc-init创建按钮。 buttonType属性是只读属性,使用-init初始化按钮不允许您设置类型。

答案 1 :(得分:0)

在用户点按按钮之前,您应该设置突出显示/选定的背景。换句话说,将前两行从操作方法移动到创建按钮的位置。