簡體   English   中英

Xcode目標C - 從另一個類更改UILabel文本

[英]Xcode Objective C - Change UILabel Text From Another Class

我有2個viewcontrollers,vc1和vc2。

vc1有一個UILabel。 vc2有一個UIButton。 當在vc2上單擊按鈕時,我希望vc1的uiLabel上的文本發生變化。 我怎么做?

vc1.h

@interface vc1 : UIViewController

@property (strong, nonatomic) IBOutlet UILabel *textLabel;

@end

vc1.m

@interface vc1 ()

@end

@implementation vc1

@synthesize textLabel = _textLabel; 

@end

vc2.m

#import "vc2.h"
#import "vc1.h"

@interface vc2 ()

@end

@implementation vc2

- (IBAction)onClick:(id)sender {

    vc1 *vc1Object = [[vc1 alloc] init];  //create object

    vc1Object.textLabel.text=@"New Text";  //set new text 
}

我上面的代碼不起作用,因為它創建一個新實例而不是訪問原始屬性。 但是,我不知道如何為IBOutlets創建getter / setter,或者是否有其他方法。 如何從第二個viewcontroller更改UIlabel上的文本?

任何幫助,將不勝感激。 先感謝您。

vc2.m文件

  • 首先在#import“VC2.h”之后聲明VC2 Class對象,如下所示:

     VC2 *sharedInstance; 
  • 在vc2.h文件中聲明以下方法和變量。

     @property NSString *msg; +(VC2 *)sharedLogger; 
  • 然后在vc2.m文件中添加以下代碼行

     +(instancetype)sharedLogger { static VC2 *vc2 = nil; static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ vc2 = [[self alloc] init]; }); } - (IBAction)onClick:(id)sender { [VC2 sharedLogger].msg = @"New Text"; } 

vc1.m文件

  • 首先導入頭文件

      #import "VC2.h" 

在viewDidLoad()中編寫代碼

   - (void)viewDidLoad {
       [super viewDidLoad];
       _textLabel.text = [VC2 sharedLogger].msg;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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