【知识分享】UIButton setTitle 设置为空 失效

 

今天开发练习超级猜图,但是碰到了一个奇怪的问题 困扰我一个晚上,低效的夜晚 可恨~

 

示例说明1

 
 

[button setTitle:@"" forState:UIControlStateNormal];
[button setTitle:nil forState:UIControlStateNormal];
//设置失效 因为 当再次获取button的值时,却是在更早的值 (btn.titleLabel.text=在设置为空之前的值)

[view setTitle: @"" forState :UIControlStateNormal ];
[view setTitle: @"" forState :UIControlStateHighlighted ];
[view setTitle: @"" forState :UIControlStateDisabled ];
[view setTitle: @"" forState :UIControlStateSelected ];
[view setTitle: @"" forState :UIControlStateApplication ];
[view setTitle: @"" forState :UIControlStateReserved ];
//
设置失效 (btn.titleLabel.text=在设置为空之前的值)
 
示例说明2:
 1 -(void)answerClick:(id)answerBtn{
 2     
 3     UIButton *btn=(UIButton*)answerBtn;
 4     
 5      NSString *answerValue=[btn titleForState:UIControlStateNormal];
 6     
 7     //NSString *answerValue=btn.titleLabel.text;
 8     
 9     [btn setTitle:nil forState:UIControlStateNormal];//设置为空
10     
11     NSLog(@"title before set nill:%@,title forstate:%@, btn.titleLabel.text:%@",answerValue,[btn titleForState:UIControlStateNormal],btn.titleLabel.text);
12     
13 }

 

 

输出:2014-09-03 19:59:03.606 05-1超级猜图[895:60b] title before set nill:笑,title forstate:(null), btn.titleLabel.text:笑


原因分析

示例1中   根据UIControlStateNormal设置为空,则必须通过[btn titleForState:UIControlStateNormal] 获取值,如果通过btn.titleLabel.text 会得到设置nil之前的值
因此 通过State赋值 一定要通过State取值,切记

转载于:https://www.cnblogs.com/akak123/p/3955539.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值