我有一個具有兩個屏幕的應用程序。在第一個屏幕中,有一個按鈕通過模態輪廓打開第二個屏幕作爲模態視圖,並且它有一個UILabel。iOS:以編程方式更改模態視圖的UILabel文本
我想這個UILabel有一個特定的文本,取決於用戶點擊按鈕的次數(他們提示:用戶只能點擊按鈕,看到提示三次)。 我在做什麼是以下方法的每一次點擊該按鈕:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"TipModal"]) {
QuizTipViewController * detailViewController = (QuizTipViewController *) segue.destinationViewController;
detailViewController.delegate = self;
detailViewController.tipText = self.quiz.currentTip;
[detailViewController.numberTipsText setText:[NSString stringWithFormat:@"Pistas para la respuesta (usadas %ld de 3)", (long)self.quiz.tipCount]] ;
NSLog(@"%d", self.quiz.tipCount);
NSLog(@"%@", detailViewController.numberTipsText.text);
}
}
最後兩個日誌有以下的輸出:
2013-05-14 19:10:47.987 QuoteQuiz[1241:c07] 0
2013-05-14 19:10:47.989 QuoteQuiz[1241:c07] Hints (0 out of 3 used)
然而,在的UILabel的文本始終是空的。
在模態窗口的視圖控制器的.h文件中,我定義的UILabel爲:
@property (strong, nonatomic) IBOutlet UILabel* numberTipsText;
,我甚至在實現文件中創建:
-(UILabel *)numberTipsText {
if (!_numberTipsText) {
_numberTipsText = [[UILabel alloc] init];
}
return _numberTipsText;
}
知道爲什麼這可能會發生,請嗎?
非常感謝!
你確定當你將文本視圖控制器的觀點是加載到標籤?如果不是,則將文本分配給在getter中創建的UILabel,但是當視圖加載時,該屬性被覆蓋。 – 2013-05-14 17:23:09
@MarcinKuptel是不是應該加載如果NSLog(@「%@」,detailViewController.numberTipsText.text);'顯示輸出? – noloman 2013-05-14 17:25:58
好吧,您的標籤已創建,但控制器視圖可能未加載。然後你必須將你的標籤添加到控制器的視圖。如果您爲_numberTipsText指定一個值,然後控制器的視圖從nib加載,則您的指定值將被銷燬。 – 2013-05-14 17:26:50