【知識分享】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取值,切記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM