【问题标题】:How to set UIButton title to null or an empty string如何将 UIButton 标题设置为 null 或空字符串
【发布时间】:2011-06-23 22:22:00
【问题描述】:

TL;DR - 我的问题确实是:如何将 UIButton 的标题设置为空字符串,或者在它已经分配了以前的标题后为 null。

我有一个 UIButton,它接受基于 NSString 变量中的文本生成的字符串,因为它的标题使用以下内容:

NSString *MyStringVariable = @"HELLO";
...
[myButton setTitle:MyStringVariable forState:UIControlStateNormal];

为了这个问题,我们假设我在我的 NSString 变量上设置了“HELLO”。然后这使我的 UIButton 有标题“HELLO”,显然......

然后我有另一个按钮从 UIbutton 中删除此标题,如下所示:

[myButton setTitle:@"" forState:UIControlStateNormal];

确实隐藏了 UIButton 的标题(即它现在看起来就像一个空的 UIButton),但经过进一步检查,标题确实仍然存在。如果我将以下内容添加到我的 UIViewController:

- (void)viewWillAppear:(BOOL)animated{
    NSLog(@"Title: %@", myButton.titleLabel.text);
}

并从此视图来回导航,标题继续登录到控制台,即使我已将文本设置为 @""。

我尝试了以下方法让标题真正消失:

[myButton setTitle:@"" forState:UIControlStateNormal];
[myButton setTitle:NULL forState:UIControlStateNormal];
[myButton setTitle:nil forState:UIControlStateNormal];
myButton.titleLabel.text = @"";

奇怪的是,如果我将标题设置为@" "(带空格):

[myButton setTitle:@" " forState:UIControlStateNormal];

标题确实正确更新,然后将空间记录到控制台,而不是旧标题。

我的问题确实是:如何将 UIButton 的标题设置为空字符串,或者在它已经分配了以前的标题后为 null。

【问题讨论】:

    标签: iphone objective-c uibutton


    【解决方案1】:

    我也遇到了同样的问题。我将所有州的按钮标题设置为@"",稍后当我检查titlelabel.text 时,它给了我以前的标题,而不是@""。所以我按照 PengOne 的建议打印了按钮的所有可能值,发现属性 titleForStatecurrentTitle 给出了更新/正确的值。

    因此,不要检查titleLabel.text,而是尝试检查currentTitletitleForState

    我仍然没有弄清楚为什么titleLabel 没有正确更新。

    【讨论】:

      【解决方案2】:

      我相信这与UIButton 在调用setTitle:forState: 时如何更新其titleLabel 属性有关。

      例如,如果您尝试通过直接访问titleLabel.text 属性来设置按钮的标题,则它不起作用(查看关于此的无数问题)。

      如果您真的想了解发生了什么,那么您应该同时查看titleLabel.text 和按钮的当前状态。一种方法是在viewWillAppearviewDidAppearviewWillDisappearviewDidDisappear 中记录titleLabel.textcurrentTitletitleForState:。前两个 (titleLabel.text, currentTitle,) 应该是一致的,第三个应该是你所期望的 (titleForState:)。

      【讨论】:

        【解决方案3】:

        这听起来像是 SDK 中的一个错误,请创建一个 bugreport

        如果您真的需要一个没有标题的按钮,您可能必须自己创建一个。一个 UIView 其图层设置为有一个cornerRadius(因此被舍入),它响应用户交互应该这样做。另外,请查看three20 工具包,其中可能有一两个自定义按钮,您可以使用它来节省一些时间。

        【讨论】:

          【解决方案4】:

          我在不同的上下文中看到了同样的问题。我一直在使用 NSLocalizableString 来更改按钮中的文本。

          似乎设置 UIButton.title 会更改其 UIButton.currentTitle,但不会更改其 UIButton.titleLabel.text

          虽然它可能不会对您的应用程序产生太大影响,但 titleLabel.txtcurrentTitle 是不同的这一事实更多地是“注意”而不是实施挑战。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-04-01
            • 2013-12-28
            • 2012-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多