如何将UIButton标题设置为null或空字符串

a1p*_*ric 5 iphone objective-c uibutton

TL; DR - 我的问题是:如何将UIButton的标题设置为空字符串,或者在已经为其分配了前一个标题后为null.

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

NSString *MyStringVariable = @"HELLO";
...
[myButton setTitle:MyStringVariable forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

为了这个问题,让我们假设我在我的NSString变量上设置了"HELLO".这使我的UIButton标题为"HELLO",显然......

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

[myButton setTitle:@"" forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

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

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

并在此视图中往返导航,即使我已将文本设置为@"",标题仍会继续记录在控制台中.

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

[myButton setTitle:@"" forState:UIControlStateNormal];
[myButton setTitle:NULL forState:UIControlStateNormal];
[myButton setTitle:nil forState:UIControlStateNormal];
myButton.titleLabel.text = @"";
Run Code Online (Sandbox Code Playgroud)

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

[myButton setTitle:@" " forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:如何将UIButton的标题设置为空字符串,或者在已经为其分配了前一个标题后为null.

ano*_*eal 6

我也遇到了同样的问题.我正在@""为所有状态设置按钮的标题,稍后当我检查titlelabel.text它时,它会给我之前的标题,而不是@"".因此,我按照PengOne的建议打印出按钮的所有可能值,并找到属性titleForStatecurrentTitle提供更新/正确的值.

所以不要检查titleLabel.text,而是检查currentTitletitleForState.

我还没弄清楚为什么titleLabel没有正确更新.


Rya*_*anR 1

这听起来像是 SDK 中的错误,请创建错误报告

如果您确实需要一个没有标题的按钮,您可能需要自己创建一个。一个 UIView 的图层设置为有一个cornerRadius(因此是圆角的),它响应用户交互应该做到这一点。另外,检查Three20工具包,它们可能有一两个自定义按钮,您可以使用它来节省一些时间。