我想从ViewController1编辑位于ViewContrller2中的UILabel。
这是我的代码,但是不起作用:
ViewController1.m:
// ....
// In my viewDidLoad :
ViewController2 *vc = [[ViewController2 alloc]init];
// calling a function :
[vc updateLabel];
// ....
ViewController2.m:
// ....
-(void)updateLabel{
self.MyLabel.text = @"Text";
// MyLabel is already declared in ViewController2.h
}
// ....
你能帮我吗?
我已经尝试了许多代码,但是仍然无法正常工作,而且我不知道问题出在哪里。
最佳答案
对与错,要实现此目的,我可能会使用NSUserDefaults在视图控制器之间提取信息。
ViewController1
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
[standardDefaults setObject:@"This is my Label" forKey:@"labelKey"];
ViewController2
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
MyLabel.text = [standardDefaults stringForKey:@"labelKey"]
答案已更新,以反映针对UIProgressView的修订问题,如下所示:
ViewController1.m
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
[standardDefaults setDouble:0.75 forKey:@"ProgressValue"]; //value you want your progress view to show
ViewController2.h
...
在此处为您的进度视图创建出口,并在IB中将其链接
@property (weak, nonatomic) IBOutlet UIProgressView *ProgressView;
ViewController2.m
@synthesize ProgressView;
...
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
double ProgressValue = [standardDefaults doubleForKey:@"ProgressValue"];
ProgressView.progress = ProgressValue;