正确返回iOS UILabel方法的方法

时间:2014-02-02 09:27:27

标签: ios iphone objective-c

我正在一个名为displayTemp

的方法中创建一个UILabel
- (UILabel *) displayTemp
{
_tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 240, 300, 30)];
[self.view addSubview:_tempLabel];

NSDictionary *key = [self.getAPICall objectForKey:@"currently"];

_tempLabel.text = [key objectForKey:@"temperature"];

return _tempLabel;
}

这只是从API调用中返回一个值。

然后我想在viewDidLoad方法

中显示dis UILabel及其文本
- (void)viewDidLoad
{
self.view.backgroundColor = [UIColor colorWithRed:0.976 green:0.518 blue:0.439 alpha:1];

UILabel *getTemp = self.displayTemp;
//How do I return the text property of self.DisplayTemp
}

我怎么回来呢?有没有更好的方法呢?

3 个答案:

答案 0 :(得分:1)

你在这里混合成语。而不是做这个“@property”类型的事情:

UILabel *getTemp = self.displayTemp;

将该行更改为:

[self displayTemp];

在你的“viewDidLoad”方法中,你会没事的。您不需要从displayTemp方法返回UILabel对象,因为您已经将它添加到视图控制器的视图中。

答案 1 :(得分:0)

UILabel *getTemp = [self displayTemp];

getTemp.text

答案 2 :(得分:0)

另外@ MichaelDautermann的回答,我建议你使用条件分支(if)在-(UILabel *)displayTemp方法中创建一次UILabel。尽管该方法只有一次调用,因为它被-(void)viewDidLoad调用,但就类的体系结构而言,您最好使该方法更灵活,更安全地防止多次调用。

因此,我修改了方法如下:

- (UILabel *) displayTemp
{
   if (_tempLabel == nil) {
       _tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 240, 300, 30)];
       NSDictionary *key = [self.getAPICall objectForKey:@"currently"];
      _tempLabel.text = [key objectForKey:@"temperature"];
       [self.view addSubview:_tempLabel];
   }

  return _tempLabel;
}

我希望我的建议对你有用。