今天開發練習超級猜圖,但是碰到了一個奇怪的問題 困擾我一個晚上,低效的夜晚 可恨~
示例說明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取值,切記