UILabel未在模拟器或iPad

时间:2016-08-04 17:47:34

标签: ios objective-c ipad

所以我在视图控制器上显示模型控制器。我在模型控制器中有文本,但不知何故文本不可见。我尝试了一切,但不知何故标签不可见。但是你留在页面上的时间是30到40秒,文字出现了。此外,在成功服务(REST)调用之后,将从主视图控制器调用此模型控制器。如果我在没有进行服务调用的情况下调用模型,那么标签在模拟器/ iPad中都可见。但如果我在成功块内的服务调用后调用它,则标签不可见。我尝试以编程方式添加文本,但仍然是同样的问题。我尝试使用Color混合图层进行调试,但标签在视图中根本不可见。 :(

  [self.serviceManager getCustDetails:account successBlock:^(NSDictionary * successDict) {
     [self hideLoadingAnimation];
     NSDictionary *custData = [[successDict objectForKey:@"txnData"] objectForKey:@"custData"];

     self.showCurrYear = [iraContribData objectForKey:@"showCurrYear"];

     if ([self.showCurrYear  isEqual: @"true"]){
     [self performSegueWithIdentifier:@"CSegue" sender:self];
     }

     } failureBlock:^(NSDictionary * failureDict) {
        [self hideLoadingAnimation];
        NSLog(@"Failiure Dict %@",failureDict);
     }];

这就是prepareForSegue方法, -

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
     {
        if([segue.identifier isEqualToString:@"CSegue"]) {
            CustViewController *cVC = segue.destinationViewController;
            cVC.delegate = self;
            [cVC setModalPresentationStyle:UIModalPresentationFormSheet];
            cVC.preferredContentSize =  CGSizeMake(800,750);
        }
     }

下面是我在故事板中的屏幕,但在模拟器中标签不可见,只有继续并且关闭按钮可见。

enter image description here

请帮助!,欢迎任何建议。谢谢!

1 个答案:

答案 0 :(得分:1)

延迟可能是由于未在主线程上进行用户界面更新。

尝试确保使用dispatch_async在主线程上执行代码,如下所示:

[self.serviceManager getCustDetails:account successBlock:^(NSDictionary * successDict) {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self hideLoadingAnimation];
        NSDictionary *custData = [[successDict objectForKey:@"txnData"] objectForKey:@"custData"];

        self.showCurrYear = [iraContribData objectForKey:@"showCurrYear"];

        if ([self.showCurrYear isEqualToString:@"true"]){
            [self performSegueWithIdentifier:@"CSegue" sender:self];
        }
    });
} failureBlock:^(NSDictionary * failureDict) {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self hideLoadingAnimation];
        NSLog(@"Failiure Dict %@",failureDict);
    });
}];