我想从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;

10-08 07:53