[英]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.