【问题标题】:Different states for UIButton not workingUIButton 的不同状态不起作用
【发布时间】:2011-06-01 15:35:18
【问题描述】:

我已经编写了这段代码来查看不同的图像状态...

UIButton *btnComment = [UIButton buttonWithType:UIButtonTypeCustom];
btnComment.tag=indexPath.row;
[btnComment addTarget:self action:@selector(goToComment:)forControlEvents:UIControlEventTouchDown];

UIImage *img1 = [UIImage  imageNamed:@"commentbtndown.png"];
UIImage *img2 = [UIImage  imageNamed:@"commentbtnup.png"];
UIImage *img3 = [UIImage  imageNamed:@"commentbtnover.png"];

[btnComment setImage:img1 forState:UIControlStateNormal];
[btnComment setImage:img2 forState:UIControlStateHighlighted];
[btnComment setImage:img3 forState:UIControlStateSelected];
[btnComment setImage:img2 forState:(UIControlStateHighlighted+UIControlStateSelected)];

btnComment.frame            =CGRectMake(0, 100, 95, 25);
[cell addSubview:btnComment];

[img1 release];
[img2 release];
[img3 release];

但它不起作用,它总是向我显示图像 1。

附言我已经在表格视图单元格中添加了这些图像

【问题讨论】:

  • 你的按钮会消失吗?
  • nops...显示很好..工作正常..但是这些该死的状态不会改变

标签: iphone objective-c ios uitableview uibutton


【解决方案1】:

问题是您使用自动释放方法imageNamed 创建UIImage 对象,然后释放这些对象,这导致您的按钮具有无效对象,因此图像将不会显示

尝试删除这行代码,您的按钮将起作用

[img1 release];
[img2 release];
[img3 release];

此外,如果您希望按钮接收触摸事件,则必须将其添加到单元格对象的 contentView 中,否则将显示按钮但您将无法点击它。

[cell.contentView addSubview:btnComment]

【讨论】:

    【解决方案2】:

    您的代码的一个问题是您不应该释放这些图像变量。 imageNamed: 返回一个自动释放的UIImage。不过,我怀疑这是否会导致您的问题。

    尝试使用| 而不是+ 进行第四次setImage 通话。

    【讨论】:

      【解决方案3】:

      您的代码的另一个问题是将按钮添加到 UITableViewCell 的位置。而不是这个:

      [cell addSubview:btnComment];

      您应该将子视图添加到单元格的contentView

      [cell.contentView addSubview:btnComment];

      但我也不确定这是否会导致您的问题...

      【讨论】:

      • 您的图片加载正常吗?文件名拼写正确等?
      • 是的,它们是,...我已将我的 tableview 的属性设置为非选中,这可能是个问题吗?
      • 嗯.. 你的表格视图、单元格和按钮中至少需要有userInteractionEnabled = YES
      • 在您的单元格上设置multipleTouchEnabled = YES 在某些情况下也可能有助于解决事件传递问题。如果您只想让您的按钮响应事件,请在您的按钮上设置exclusiveTouch = YES
      • UIButton 可以同时处于UIControlStateHighlightedUIControlStateSelected 状态吗?如果您暂时删除该行代码会怎样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多