3

我是 Objective C 的新手,我想我不明白你是如何处理对象的。我创建了一个 UILabel,我可以设置文本和其他所有内容。但我想用不同的方法更新它……意思是我想改变文本,但我没有那个方法中的对象!

这就是我设置 UILabel 的方式

- (void)viewDidLoad
{
    [super viewDidLoad];
    UILabel *scoreLabel = [ [UILabel alloc ] initWithFrame:CGRectMake((self.view.bounds.size.width / 2), 0.0, 150.0, 43.0) ];
    scoreLabel.textAlignment =  UITextAlignmentCenter;
    scoreLabel.textColor = [UIColor whiteColor];
    scoreLabel.backgroundColor = [UIColor redColor];
    scoreLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:(36.0)];
    [self.view addSubview:scoreLabel];
    scoreLabel.text = [NSString stringWithFormat: @"%d", 0];
}

那就是我想更改 UILabel 文本的地方

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.crossView.alpha = 0.5;
    ...change scoreLabel.test 
}

这两种方法都在 ViewController 中!

也许我可以将 UILabel 绑定到自己?但如何?

4

5 回答 5

11

您需要在 .h 中为您的 UILabel 创建一个属性,以便您可以根据您的 ViewController 修改它

在你的 .h 之前添加这个@end

@property (strong, nonatomic) UILabel *scoreLabel;

比在您的 viewDidLoad 中执行此操作:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _scoreLabel = [ [UILabel alloc ] initWithFrame:CGRectMake((self.view.bounds.size.width / 2), 0.0, 150.0, 43.0) ];
    _scoreLabel.textAlignment =  UITextAlignmentCenter;
    _scoreLabel.textColor = [UIColor whiteColor];
    _scoreLabel.backgroundColor = [UIColor redColor];
    _scoreLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size:(36.0)];
    [self.view addSubview:_scoreLabel];
    _scoreLabel.text = [NSString stringWithFormat: @"%d", 0];
}

稍后在您的视图控制器中:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.crossView.alpha = 0.5;
    _scoreLabel.text = @"CHANGED TEXT";
}
于 2013-01-14T16:14:20.607 回答
2

作为定义类属性的附加选项,您可以tag为您的UILabel实例设置属性,稍后当您想要更新标签的内容时,使用获取此标签

UILabel *label = (UILabel *)[self.view viewWithTag:someTag];

此方法在当前视图及其所有子视图中搜索指定视图。

于 2013-01-14T16:42:37.590 回答
1

在标题中:

@property(nonatomic, retain) UILabel *scoreLabel;

并在 .m 中(在任何方法之外,通常就在该@implementation [ClassName];行之后):

@synthesize scoreLabel;

然后,当您实例化它时,只需执行以下操作:

self.scoreLabel = [[UILabel alloc ] initWithFrame:CGRectMake((self.view.bounds.size.width / 2), 0.0, 150.0, 43.0)];

您将能够self.scoreLabel在 .m 中的任何位置引用它

于 2013-01-14T16:13:25.933 回答
1

在你的界面写这个

interface YourViewController{
    ....
    UILabel *scoreLabel
}
.....

@end

在您的实现中,您可以通过这种方式轻松访问您的变量

@Implementation YourViewController
....
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.crossView.alpha = 0.5;
    scoreLabel.text = @"Your Text"
}
....
@end
于 2013-01-14T16:16:49.693 回答
0

要在 UILabel 中设置文本/字符串,请使用:

self.yourLabel.text=@"Your String";
于 2016-06-13T13:31:30.063 回答