【问题标题】:Better Way to Set Button Title for 2 States为 2 个状态设置按钮标题的更好方法
【发布时间】:2014-03-20 10:12:18
【问题描述】:

这就是我现在的做法

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal];
[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateSelected];

这样做会有什么更好的方法,以便机器人 UIControlStateNormal 的标题发生变化,即使按钮被选中

我尝试过的:

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal | UIControlStateSelected];

事情是 UIControlStateNormal 是 0。所以 UIControlStateNormal | UIControlStateSelected 就是 UIControlStateSelected。这意味着当未选择按钮时标题不会改变。

【问题讨论】:

标签: objective-c uibutton xcode5


【解决方案1】:

您可以使用 | 执行 bitwsie OR,如下所示:

[self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateNormal | UIControlStateSelected];

【讨论】:

  • 准确地说,是“按位或”。
  • 其实行不通 UIControlStateNormal | UIControlStateSelected 将简单地变为 UIControlStateSelected 并且在按钮正常时不起作用。
【解决方案2】:

嗯,对于UIButton 上的一个类别来说,这听起来很完美:

- (void)setTitleForAllStates:(NSString *)title
{
    for (UIControlState i = 0; i <= 3; i++)
        [self setTitle:title forState:i];
}

【讨论】:

    【解决方案3】:

    其他方式,

    #define UIControlStateAll UIControlStateNormal | UIControlStateSelected | UIControlStateHighlighted
    
    [self.distanceFilter setTitle:strValueForDistanceFilter forState:UIControlStateAll];
    

    【讨论】:

    • 行不通。您应该使用 | 而不是 &amp;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2022-01-05
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多