【问题标题】:UIActivity Indicator not displayingUIActivity 指示器不显示
【发布时间】:2011-11-03 01:32:22
【问题描述】:

嘿,伙计们,在上一个问题的帮助下,我想我几乎已经完成了这项工作.. 代码如下

-(void)viewDidLoad
{
    [super viewDidLoad];

    //... all your previous charge.

    UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

    activity.hidesWhenStopped = YES;

    activity.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin |
        UIViewAutoresizingFlexibleHeight |
        UIViewAutoresizingFlexibleLeftMargin |
        UIViewAutoresizingFlexibleRightMargin |
        UIViewAutoresizingFlexibleTopMargin |
        UIViewAutoresizingFlexibleWidth;

    [self.tableview addSubview:activity];

    [activity startAnimating];

    [activity performSelector:@selector(stopAnimating) withObject:nil afterDelay:0.5];

}

但什么也没有出现..代码没有产生任何错误..所以如果我遗漏了一些东西,那就麻烦了。

【问题讨论】:

  • 您尚未为活动视图设置框架。您可能想要,这样您就可以控制它的大小和位置。
  • ahh.. 现在将阅读有关此内容的信息。. 我第一次有活动指示器:P 正在查看示例,但不确定它们是否与我的问题有关。
  • 您将 UIActivityIndi​​catorView 直接添加到 UITableView ——因此它可能位于任何表格视图单元格的后面(因此不可见)。
  • 是的,我想知道是不是这样。所以听起来框架是关键。

标签: iphone ios uitableview uiactivityindicatorview


【解决方案1】:

有几件事可以尝试:

  • 尚不清楚您的 tableView 是否出现和/或填充了数据。如果对表格是否存在有任何疑问,请为tableView 设置非白色背景颜色。如果您没有看到 tableView,请先修复它或将 activityIndicatorView 添加为您知道可以看到的其他视图的子视图。

  • activityIndicatorView 设置一个框架,这样您就知道它应该出现在哪里了

  • activityIndicatorViewautoResizingMask 中删除UIViewAutoResizingFlexibleWidthUIViewAutoResizingFlexibleHeight 选项。您不希望 activityIndicatorView 根据其超级视图更改大小。

  • 您正在使用白色活动指示器。确保它会根据您的表格视图和单元格中的颜色显示。除非你有一张深色的桌子,否则我发现灰色的活动指示器更明显。

  • 去掉你的计时器来停止动画,至少在你确定你可以看到activityIndicatorView之前。这是一个奇怪的用户体验恕我直言。通常,您应该根据您希望用户了解的应用程序中的进程来启动/停止活动指示器

  • 同样,设置hidesWhenStopped = NO,直到确保可以看到activityIndicatorView

当您可以看到 activityIndicatorView 并且一切看起来都令人满意时,您可以添加回您想要的行为。

【讨论】:

  • 好吧,酷。现在要检查这些东西。会让你知道我怎么走。
  • 好的,我已经完成了你所要求的一切......但它没有工作。但是我想我可能知道为什么..但不知道如何解决。因为我的应用程序是基于导航的应用程序,我将视图加载到我在 appdelegate 中设置的导航控制器中。我不知道如何解决这个问题。
  • 我感觉您还有其他问题。您需要发布更多代码来展示您如何初始化和呈现您的根视图控制器。还要解释发生了什么(例如,您认为您的导航控制器和它的根视图控制器是否正在加载和呈现)?
  • 我会尽力解释这一点。在我的 appdelegates.nib 中,我有一个 UIView,其中包含导航控制器视图。我将所有的 tableviews 加载到等等。我猜这是问题,但我不知道如何解决它\
  • 我确定问题很简单,但没有更多相关代码,我不知道如何提供帮助。
【解决方案2】:

您已将其设置为在停止动画时隐藏,并且执行选择器在开始动画后 0.5 秒停止动画。此外,这一切都是在视图加载方法期间完成的。您不能保证视图在加载后立即可见。所以可能是动画在视图显示之前开始和停止!

尝试将执行选择器放在 viewDidAppear 方法中,并至少在最初将延迟设置为更长的时间。一旦你知道它是可见的,你总是可以把它改回来。

祝你好运

【讨论】:

  • 我将计时器设置为 20 秒,不幸的是,这并没有奏效。太令人沮丧了大声笑
  • 但是你把performSelector方法放到viewDidAppear方法里面了吗?
  • 不,我把它放在视图 didload 中,它似乎没有工作。
【解决方案3】:

可能是 tableview 单元格 位于 indicator 视图上方。您可以将活动指示器放在 tableView.tableHeaderViewtableView.tableFooterView 中。
或者
使用[self.view addSubview: activity]; 将指示器添加到父视图而不是tableView。 希望这会奏效..

【讨论】:

  • 感谢您的帮助,但这没有用。我想我可能做错了什么。
猜你喜欢
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多