簡體   English   中英

從Objective-C中的另一個類更新UILabel文本

[英]Update UILabel text from another class in Objective-C

我在ViewCotroller類中實現了一個方法,用於將該消息設置為該類中的UILable。

 -(void)setAuthenticationMessage:(NSString *)message{
        //lblStatus is the UILabel
        lblStatus.text = message;
 }

我正在從另一個類訪問此方法來設置消息。 盡管代碼正確執行,但此消息未更新。 我通過在另一個線程中執行此方法來進行嘗試。 但這也不成功。 誰能幫我解決這個問題?

lblStatus的內存管理屬性是什么? 僅憑您的命名約定,我就相信這與此有關。 通常,您將實例變量稱為: _lblStatusself.lblStatus

使用@protocol&委托訪問另一個類,請參考此鏈接示例 example2

使用委托設計模式(將其谷歌搜索)。 例:

    //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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM