TL; DR - 我的问题是:如何将UIButton的标题设置为空字符串,或者在为其分配了之前的标题后为null。
我有一个UIButton,它使用以下内容接受基于NSString变量中文本生成的字符串作为标题:
NSString *MyStringVariable = @"HELLO";
...
[myButton setTitle:MyStringVariable forState:UIControlStateNormal];
为了这个问题,让我们假设我在我的NSString变量上设置了“HELLO”。这使我的UIButton标题为“HELLO”,显然......
然后我有另一个按钮从UI按钮中删除这个标题,如下所示:
[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。
答案 0 :(得分:6)
我也遇到了同样的问题。我将所有州的按钮标题设置为@""
,稍后当我检查titlelabel.text
时,它会向我提供之前不是@""
的标题。因此,我按照PengOne的建议打印出按钮的所有可能值,并发现属性titleForState
和currentTitle
提供更新/正确的值。
因此,请检查titleLabel.text
或currentTitle
,而不是检查titleForState
。
我仍然没有弄清楚为什么titleLabel
没有正确更新。
答案 1 :(得分:2)
我认为这与UIButton
在调用titleLabel
时更新其setTitle:forState:
属性的方式有关。
例如,如果您尝试通过直接访问titleLabel.text
属性来设置按钮的标题,则它不起作用(请查看有关此问题的无数问题)。
如果您真的想了解正在发生的事情,那么您应该同时查看titleLabel.text
和按钮的当前状态。一种方法是在titleLabel.text
,currentTitle
,titleForState:
和{{1}中记录viewWillAppear
,viewDidAppear
和viewWillDisappear
}。前两个(viewDidDisappear
,titleLabel.text
,)应该重合,第三个应该是您期望的(currentTitle
)。
答案 2 :(得分:1)
这听起来像SDK中的一个错误,创建一个bugreport。
如果你真的需要一个没有标题的按钮,你可能需要自己创建一个。一个UIView,它的图层设置为有一个cornerRadius(因此被舍入),它响应用户交互应该这样做。另外,检查three20工具包,他们可能有一两个自定义按钮,您可以使用它来节省一些时间。
答案 3 :(得分:0)
我在不同的背景下看过同样的问题。我一直在使用NSLocalizableString来更改按钮中的文本。
似乎设置 UIButton.title 会更改其 UIButton.currentTitle ,而不会更改其 UIButton.titleLabel.text 。
虽然它可能对您的应用程序没有多大影响,但 titleLabel.txt 和 currentTitle 不同的事实变成了更多的"要知道"而不是实施挑战。