【问题标题】:UILabel shows in iOS simulator, but not after running .IPA app on deviceUILabel 在 iOS 模拟器中显示,但在设备上运行 .IPA 应用程序后不显示
【发布时间】:2013-02-12 17:13:38
【问题描述】:

“iLabel”在模拟器中显示,但一旦归档并运行 IPA 文件,它就无法显示。我尝试清理代码,但没有做任何事情。 iLabel 的想法是在 UIIndicator 动画时显示,当然当指示器消失时也会消失。

- (void)viewDidLoad
{
  [super viewDidLoad];

  [[self myTableView] setDelegate:self];
  [[self myTableView] setDataSource:self];
  array = [[NSMutableArray alloc] init];

  [self startActivity];
}

-(void)startActivity
{
  indicator.hidden=NO;
  [indicator startAnimating];

  [self uploadData];
  NSLog(@"VIEWDIDLOAD-INDICATOR-TURNING-ON: %@", indicator);
}

-(void)uploadData
{
  NSLog(@"Uploading...");

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkForReachability) name:kReachabilityChangedNotification object:nil];

  Reachability *reachability = [Reachability reachabilityForInternetConnection];
  [reachability startNotifier];

  NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];

  if(remoteHostStatus == NotReachable)
  {
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle: @"Oops..."
                          message: @"Network connection lost."
                          delegate: nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    [alert show];    }

  else if (remoteHostStatus == ReachableViaWiFi)
  {
    iLabel.text = @"Please be patient...";
  }
}


- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
  [self setString];

  NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];
  NSString *string1 = [dic objectForKey:@"name"];
  NSString *string7 = [dic objectForKey:@"review_count"];
  NSString *string3 = [dic objectForKey:@"display_phone"];
  NSDictionary *location = [dic objectForKey:@"location"];
  NSArray *array2 = [location objectForKey:@"display_address"];
  NSDictionary *coordinate = [location objectForKey:@"coordinate"];

  lat = [coordinate objectForKey:@"latitude"];
  lon = [coordinate objectForKey:@"longitude"];
  mURL = [dic objectForKey:@"mobile_url"];

  NSString *string4 = [array2 objectAtIndex:0];
  NSString *string5 = [array2 objectAtIndex:1];
  NSString *img2String = [dic objectForKey:@"image_url"];

for (NSDictionary *diction in dic)
{
    NSString *string6 = [NSString stringWithFormat:@"Yelp Rating:                   "];
    NSString *string8 = [NSString stringWithFormat:@"Based on %@ Review(s)", string7];

    [array addObject:string1];
    [array addObject:string6];
    [array addObject:string8];
    [array addObject:string3];
    [array addObject:string4];
    [array addObject:string5];

    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:img2String]]];
    imageView.image = image;
  }

  for (NSDictionary *diction in coordinate)
  {
    [array addObject:lat];
    [array addObject:lon];
  }

  [[self myTableView] reloadData];

  [indicator stopAnimating];
  indicator.hidden=YES;
  [indicator removeFromSuperview];

  iLabel.text = @"";
  [iLabel removeFromSuperview];
}

【问题讨论】:

  • 发布一些代码会有所帮助...
  • 您是否碰巧对 iLabel 有弱引用?我不能仅从您发布的代码中看出它,但我之前已经看到它在哪里删除然后添加具有弱引用的 UI 元素将在设备和模拟器上工作,但是一旦它被优化(比如在发布/存档构建)内存被更积极地释放,事情消失得更快。您可以通过将引用更改为强来测试这一点,如果解决了,它会尝试重新处理您的代码正在执行的操作。

标签: ios xcode xcode4 ios-simulator uilabel


【解决方案1】:

从您发布的代码来看,如果无法访问远程主机,则您永远不会设置iLabel 的文本。因此,如果标签未显示在设备上,请检查在您设置标签时是否可以从设备访问远程主机

【讨论】:

  • 谢谢,我去看看!
  • 我只是想到了另一种可能性:我只在我的“.M”界面中声明了 iLabel。我在想如果我将它添加到“.H”中,保留并合成我可能会有更好的结果?
【解决方案2】:

不知道为什么我没有早点发现它。问题出在以下几点:

    if(remoteHostStatus == NotReachable)
    {
      UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle: @"Oops..."
                          message: @"Network connection lost."
                          delegate: nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
      [alert show];    }

    else if (remoteHostStatus == ReachableViaWiFi)
    {
      ilabel.text = @"Please be patient...";
    }

我把底部改成:

    else
    {
      ilabel.text = @"Please be patient...";
    }

...现在一切顺利。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2017-01-29
    • 2013-10-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多