单击按钮时无法在UILabel上显示值

时间:2016-05-23 20:05:18

标签: ios objective-c

我正在尝试在UILabels上显示天气数据值(通过进行API调用获取),这是代码:

self.maxTempField.text = [NSString stringWithFormat:@"%@",vari[@"main"][@"\"temp_max\""]];
NSLog(@"Max Temp %@", vari[@"main"][@"temp_max"]);
self.atmosphericPresField.text = [NSString stringWithFormat:@"%@", vari[@"main"][@"pressure"]];
self.windSpeed.text = [NSString stringWithFormat:@"%@", vari[@"wind"][@"speed"]];
NSLog(@"Speeed of the wind %@", vari[@"wind"][@"speed"]);

我无法理解为什么标签没有更新。我还尝试将UILabel替换为UITextField,但问题仍然存在。以下是按钮操作的完整代码:

- (IBAction)moreProperties:(id)sender {
    UIStoryboard *refToStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    UIViewController *pointerToMoreValuesVC = [refToStoryBoard instantiateViewControllerWithIdentifier:@"MorePropertiesVC"];
    pointerToMoreValuesVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:pointerToMoreValuesVC animated:YES completion:nil];
    self.noteLabel.text = @"Random Text";

    dispatch_async(dispatch_get_main_queue(), ^{

        self.maxTempField.text = [NSString stringWithFormat:@"%@",vari[@"main"][@"\"temp_max\""]];
        NSLog(@"Max Temp %@", vari[@"main"][@"temp_max"]);
        self.atmosphericPresField.text = [NSString stringWithFormat:@"%@", vari[@"main"][@"pressure"]];
        self.windSpeed.text = [NSString stringWithFormat:@"%@", vari[@"wind"][@"speed"]];
        NSLog(@"Speeed of the wind %@", vari[@"wind"][@"speed"]);
    });
}

我还检查了所有标签连接,它们很好。

1 个答案:

答案 0 :(得分:0)

  1. 首先创建一个名为WetherDetailVC的新类
  2. 现在你有两个文件.h和.m
  3. 将类WetherDetailVC分配给身份检查器中的视图控制器
  4. 如果您不想再次创建插座,只需切断所有插座(maxTempField,minTempField,...等)并将其全部粘贴在WetherDetailVC.h文件中
  5. 现在使用ViewController.h中的类对象访问所有插座

    - (IBAction)moreProperties:(id)sender {
     UIStoryboard *refToStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
     WetherDetail *pointerToMoreValuesVC = [refToStoryBoard instantiateViewControllerWithIdentifier:@"MorePropertiesVC"];
     pointerToMoreValuesVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:pointerToMoreValuesVC animated:YES completion:nil];
     pointerToMoreValuesVC.noteLabel.text = @"Random Text";
     pointerToMoreValuesVC.maxTempField.text = [NSString stringWithFormat:@"%@",vari[@"main"][@"temp_max"]];
     pointerToMoreValuesVC.atmosphericPressureField.text = [NSString stringWithFormat:@"%@", vari[@"main"][@"pressure"]];
      pointerToMoreValuesVC.windSpeedField.text = [NSString stringWithFormat:@"%@", vari[@"wind"][@"speed"]];
    }