从另一个类更改UILabel的文本

我有一个视图控制器和一个类(我正在使用故事板)。 如何从类中更改UILabel (在视图控制器中)的文本? 我试过这个,但无济于事:

 ViewController *mainView = [[ViewController alloc] init]; [mainView view]; [mainView.progressBar setProgress:integer animated:YES]; NSLog(@"Updated Progress Bar"); NSString *progressLabelText = [NSString stringWithFormat:@"%@ out of %i followers", userString, [self.followers count]]; [mainView.progressLabel setText:progressLabelText]; NSLog(@"Updated Progress Label Text: %@", progressLabelText); 

使用此代码不会更改文本。 我应该做什么呢?

编辑:ViewController的.h文件中的进度条和标签如下所示:

 @property (nonatomic, strong) IBOutlet UIProgressView *progressBar; @property (nonatomic, strong) IBOutlet UILabel *progressLabel; 

它们在Interface Builder中完全链接起来。

使用delegateclassesviewcontrollers之间进行messaging

请参阅协议和代理的基础知识链接。

尝试使用通知更新Lable文本。

在你的viewController中写这个:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLabel) name:@"lblUpdate" object:nil]; and selector is : -(void)updateLabel { self.lblObject.text = @"Your updated text" } 

现在在你的课程中使用post通知来调用它:

  [[NSNotificationCenter defaultCenter] postNotificationName:@"lblUpdate" object:nil]; 

记得使用相同的通知名称“lblUpdate”

just属性合成字符串,然后在ViewController.m类的viewWillAppear:方法中设置该字符串

只需在ViewController.h文件中获取NSString变量,如下所示..

 @property (nonatomic, retain) NSString *progressText; 

并在ViewController.m文件中synthesize这个,如下所示..

 @synthesize progressText; 

之后在viewDidLoad:方法中,只需将开头的文本设置为progressLableText ,如下所示…

 - (void)viewDidLoad { progressText = @"Your Text"; [progressLabel setText:progressText]; } 

以及在viewWillAppear:设置上面的文字……

 - (void)viewWillAppear:(BOOL)animated { [progressLabel setText:progressText]; } 

在你的代码中只需更改类似下面的内容..

 ViewController *mainView = [[ViewController alloc] init]; [mainView view]; [mainView.progressBar setProgress:integer animated:YES]; NSLog(@"Updated Progress Bar"); NSString *progressLabelText = [NSString stringWithFormat:@"%@ out of %i followers", userString, [self.followers count]]; mainView.progressText = progressLabelText; [mainView.progressText retain]; NSLog(@"Updated Progress Label Text: %@", progressLabelText); 

我希望这对你有帮助…

但是使用delegate来进行回调。 在您的spamchecker.h添加:

 @protocol SpamCheckerDelegate  -(void)updateText:(NSString*)newText; @end @property (nonatomic, weak) id  delegate; 

在您需要的spamchecker.m中添加:

 [self.delegate updateText:@"newText"]; 

然后在你的mainView.h添加:

 @interface MainView : UIViewController  

在你的mainview.m添加:

 spamchecker.delegate = self; 

并实现如下方法:

 -(void)updateText:(NSString*)newText { [self.progressLabel setText:progressLabelText]; }