我正在一个名为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
}
我怎么回来呢?有没有更好的方法呢?
答案 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;
}
我希望我的建议对你有用。