【发布时间】:2017-08-02 09:06:10
【问题描述】:
我有 2 个视图控制器,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,或者是否有其他方法。如何从第二个视图控制器更改 UIlabel 上的文本?
任何帮助将不胜感激。提前谢谢你。
【问题讨论】:
-
您可以使用以下任何一种:- 1.
NSNotificationCenter2.KVO3.Delegates4.Block -
您是如何管理 v1 和 v2 的?你要从 v2 到 v1 吗?或者这个 v1 和 v2 是 uiviewcontainers?或者您从 v2 发送回 v1 - 方法会有所不同
-
@pkc456 我最终使用了 NSNotificationCenter,感谢您的帮助!
-
@hmzfier 我应该把它作为答案,以便它也可以到达有需要的人吗?
标签: objective-c xcode uilabel iboutlet