尝试更新 UIButton 的标题以响应被选中

Posted

技术标签:

【中文标题】尝试更新 UIButton 的标题以响应被选中【英文标题】:Trying to update the title a UIButton in response to being selected 【发布时间】:2014-02-16 00:45:22 【问题描述】:

我正在尝试在选择按钮时从 u -> d 更新标题。 'u' 的设置工作正常,但单击按钮后,它不会更新。我正在付诸行动,但不确定这是否是正确的地方。

在 viewDidLoad 中

[self.expandButton setTitle:@"u" forState: UIControlStateNormal];

我把这个放在哪里? - 在 UIButton 的操作中无法正常工作:

[self.expandButton setTitle:@"d" forState: UIControlStateSelected];

感谢任何帮助

编辑 1

被设置为属性: @property (weak, nonatomic) IBOutlet UIButton *expandButton;

...

这是操作以及我尝试设置选定状态的方式:

- (IBAction)expand:(id)sender 
    [self.expandButton setTitle:@"d" forState: UIControlStateSelected];

【问题讨论】:

您想在选择按钮或突出显示时更改标题? 设置“d”标题的代码在哪里? 当用户单击按钮时,我想从 u -> d 更新 UIButton。我还需要设置什么吗? 【参考方案1】:

您可以创建一个函数来设置按钮标题并在触摸时调用它:

[button addTarget:self action:@selector(buttonTouchDown:)forControlEvents:UIControlEventTouchDown];

【讨论】:

【参考方案2】:

...

已编辑

我得到的是,当点击按钮时,状态变为selected,当再次点击时,状态又回到正常。你可以使用这些技巧:

- (void)viewDidLayoutSubviews 
    [super viewDidLayoutSubviews];
    
    [button setTitle:@"unselected" forState:UIControlStateNormal];
    [button setTitle:@"selected" forState:UIControlStateSelected];
    [button addTarget:self action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];


- (void)buttonTap:(UIButton *)sender 
    sender.selected = !sender.selected;

【讨论】:

thx - 我可能没有得到 UIButton - 这基本上会闪烁到黑色,然后返回给你。嗯....我是否需要以某种方式将按钮设置为“选定”状态?【参考方案3】:

您可以制作一个“空白”按钮并在其上使用 UILabel。我不确定您为什么没有收到更新,但根据我的经验,我通常会以这种方式处理这种情况。

【讨论】:

以上是关于尝试更新 UIButton 的标题以响应被选中的主要内容,如果未能解决你的问题,请参考以下文章

为啥在我松开手指之前我的 UIButton 的选中状态没有被触发?

iOS UIButton 选中状态

UIScrollView下的UIButton没有响应触摸

Swift 中选中/未选中的 UIButton

如何使用 Interface Builder 在其他 UI 元素的背景中添加 UIButton?

UiButton 一个“仅界面生成器”解决方案,以响应方式调整标题标签的字体