[英]Update UILabel text from another class in Objective-C
我在ViewCotroller類中實現了一個方法,用於將該消息設置為該類中的UILable。
-(void)setAuthenticationMessage:(NSString *)message{
//lblStatus is the UILabel
lblStatus.text = message;
}
我正在從另一個類訪問此方法來設置消息。 盡管代碼正確執行,但此消息未更新。 我通過在另一個線程中執行此方法來進行嘗試。 但這也不成功。 誰能幫我解決這個問題?
lblStatus
的內存管理屬性是什么? 僅憑您的命名約定,我就相信這與此有關。 通常,您將實例變量稱為: _lblStatus
或self.lblStatus
使用委托設計模式(將其谷歌搜索)。 例:
//In the updating class .h
@protocol LabelChangerDelegate <NSObject>
-(void)handleLabelChangeMessage;
@end
@property (assign, nonatomic) id <LabelChangerDelegate> delegate;
//In the updating class .m
-(void)changeLabelInOtherClass{
if (self.delegate != nil && [self.delegate respondsToSelector:@selector(handleLabelChangeMessage)]) {
[self.delegate performSelector:@selector(handleLabelChangeMessage)];
}
} else {
NSLog(@"Delgate doesn't implement handleLabelChangeMessage");
}
//In the view controller .h
<LabelChangerDelegate>
-(void)viewDidLoad{
//set the delegate to self
}
//In the view controller .m
-(void)handleLabelChangeMessage{
self.label.text=@"I changed through delegation";
}
另一個選擇是使用NSNotificationCenter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.