【问题标题】:How to make Uibutton selected如何使 Uibutton 被选中
【发布时间】:2014-01-11 13:22:43
【问题描述】:

我有一个UIButton,当我选择该按钮时它仍然处于选中状态。这是我的代码:

- (IBAction)cloudclick:(UIButton *)sender {
    UIImage *bgImage = [UIImage imageNamed:@"black_cloud.png"];
    UIButton *tmpButton = (UIButton *)[self.view viewWithTag:sender.tag];
    [tmpButton setBackgroundImage:bgImage forState:UIControlStateSelected];

} 

但是当我点击按钮时它并没有保持选中状态。它会更改背景,但不会保留为选定按钮。

【问题讨论】:

  • 只为UIControlStateNormal设置图像。
  • 为什么UIButton *tmpButton = (UIButton *)[self.view viewWithTag:sender.tag]; 你已经有了UIButton,因为它是sender。这不像你在复制它是什么。我会删除这一行,只使用sender
  • 我已经从xib创建了按钮,其中xib已经设置为一个背景图像,现在我希望选择该按钮时,它会改变另一个图像。如果我将图像放在“状态配置”中的 Xib 按钮选择属性中,它不会显示我选择的图像
  • 使用[tmpButton setSelected:YES]; 保持选中状态
  • @Ron 这并不能解释为什么你需要额外的无意义的代码行。您可以将tmpButton 替换为sender

标签: ios iphone objective-c uibutton


【解决方案1】:

你必须在你的代码之后写一行

- (IBAction)cloudclick:(UIButton *)sender {
    ...
    [tmpButton setSelected:YES];
}

【讨论】:

    【解决方案2】:

    使用这行代码

    sender.selected=!sender.selected;
    

    如果您从代码中制作按钮,则在分配时为差异状态设置不同的图像,否则从 xib 设置图像。

    【讨论】:

      【解决方案3】:

      各种状态:UIControlStateNormal、UIControlStateSelected 和 (UIControlStateSelected | UIControlStateHighlighted) 实际上都是不同的。如果您希望您的 shadowImage 既适用于(仅)突出显示状态,也适用于突出显示+选定状态,您还必须设置:

      [button setBackgroundImage: bgImage forState:(UIControlStateHighlighted | UIControlStateSelected)]
      

      【讨论】:

        【解决方案4】:

        在 Swift 5 中

        sender.isSelected.toggle()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-26
          • 1970-01-01
          • 2021-09-20
          相关资源
          最近更新 更多