我有一个视图控制器和一个类(我正在使用故事板)。如何从类中更改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中完全链接。
答案 0 :(得分:3)
在delegate
或messaging
之间classes
使用viewcontrollers
。
答案 1 :(得分:3)
尝试使用通知更新Lable文本。
你的viewController中的写下这个:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLabel) name:@"lblUpdate" object:nil];
and selector is :
-(void)updateLabel
{
self.lblObject.text = @"Your updated text"
}
现在在你的课程中使用帖子通知来调用它:
[[NSNotificationCenter defaultCenter] postNotificationName:@"lblUpdate" object:nil];
请记住使用相同的通知名称“lblUpdate”
答案 2 :(得分:0)
但是使用delegate
来进行回调。
在spamchecker.h
添加:
@protocol SpamCheckerDelegate <NSObject>
-(void)updateText:(NSString*)newText;
@end
@property (nonatomic, weak) id <SpamCheckerDelegate> delegate;
在您需要的spamchecker.m
添加:
[self.delegate updateText:@"newText"];
然后在mainView.h
添加:
@interface MainView : UIViewController <SpamCheckerDelegate>
在mainview.m
添加:
spamchecker.delegate = self;
并实施如下方法:
-(void)updateText:(NSString*)newText
{
[self.progressLabel setText:progressLabelText];
}
答案 3 :(得分:0)
只是属性合成字符串,然后在viewWillAppear:
类<{1}}方法中设置该字符串
只需在ViewController.m
文件中获取NSString
变量,如bellow ..
ViewController.h
和@property (nonatomic, retain) NSString *progressText;
在synthesize
文件中,如下文...
ViewController.m
之后在@synthesize progressText;
方法中,只需将文字设置为viewDidLoad:
,如下所示......
progressLableText
并且- (void)viewDidLoad
{
progressText = @"Your Text";
[progressLabel setText:progressText];
}
也设置了上面的文字......
viewWillAppear:
在您的代码中只需更改类似于下面的内容..
- (void)viewWillAppear:(BOOL)animated
{
[progressLabel setText:progressText];
}
我希望这对你有帮助......