UIButton setTitleColor和setImage不起作用

时间:2012-05-07 09:50:25

标签: iphone uitableview uibutton

我正在为我的iPhone项目使用StoryBoard功能。在故事板中,我有一个视图控制器,其中包含使用原型单元格的表视图。在原型单元格内部,我有一个UIButton(圆角矩形)连接到一个子类UIButton类。 tableview从数组中获取数据,数据在cellForRowAtIndexPath中打印出来。

在cellForRowAtIndexPath中,我有条件地修改了单元格的外观。这是我开始遇到问题的时候。我能够成功更改按钮的文本。但是,如果我尝试更改按钮的图像,请使用:

[cell.myButton setImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

图像已更改,但文本消失。

如果我尝试更改按钮的文字颜色,请使用:

[cell.myButton setTitleColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.77] forState:UIControlStateNormal]

什么都没发生。颜色保持不变(除非我也尝试更改图像,在这种情况下它会完全消失)。

我感觉我在这里做了一些根本错误的事情 - 你有什么建议吗?

5 个答案:

答案 0 :(得分:3)

如下定义myButton并检查。这可能是您的代码中的错误。代码是:

myButton = [UIButton buttonWithType:UIButtonTypeCustom];

这是新编辑的部分:

[myButton setBackgroundImage:yourimage forState:UIControlStateNormal];
    [myButton setTitleColor:yourcolor forState:UIControlStateNormal];

答案 1 :(得分:3)

使用

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;   

更改带有文字的图片

使用

btn.titleLabel.textColor = yourcolor;

更改文字颜色

答案 2 :(得分:2)

这是为自定义按钮设置不同属性的方法...您还可以在此处找到setBackgroudimage和setTitleColor属性...

    UIButtin  *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [myButton setFrame:CGRectMake(165, 205, 65, 40)];
   [myButton setTitleColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.77]  forState:UIControlStateNormal];
   [myButton setTitle:@"Hi....." forState:UIControlStateNormal];
   [myButton addTarget:self action:@selector(btnClicked:)     forControlEvents:UIControlEventTouchUpInside];
   [myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];
   [cell  addSubview:myButton];

谢谢你..

答案 3 :(得分:0)

我想你想要的是改变你的按钮背景:

[cell.myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

答案 4 :(得分:0)

您的文字消失了,因为您已将按钮正面的图像设置为按钮主图像。

[cell.myButton setImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];

您需要设置按钮背景图像,以便在UIButton上下文的背面绘制图像时显示文本。

所以只需将上面的代码行替换为:

[cell.myButton setBackgroundImage:[UIImage imageNamed:@"mynewimage.png"] forState:UIControlStateNormal];