UIActivity指标未显示

时间:2011-11-03 01:32:23

标签: iphone ios uitableview uiactivityindicatorview

嘿伙计们在上一个问题上得到了一些帮助,我想我几乎得到了这个工作...... 代码

-(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];

}

但没有出现..代码没有产生任何错误..所以只是想知道我是否遗漏了什么。

3 个答案:

答案 0 :(得分:1)

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

尝试将执行选择器放在viewDidAppear方法中,并且至少在开始时将延迟设置为更长的时间。一旦您知道可见时间,您就可以随时更改时间。

祝你好运

答案 1 :(得分:1)

要尝试的一些事项:

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

  • activityIndicatorView设置一个框架,以便您确切知道它应该出现在哪里

  • UIViewAutoResizingFlexibleWidth的{​​{1}}中删除UIViewAutoResizingFlexibleHeightautoResizingMask个选项。您不希望activityIndicatorView根据其超级视图更改大小。

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

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

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

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

答案 2 :(得分:0)

可能 tableview单元格位于指标视图之上。您可以将活动指标放在tableView.tableHeaderViewtableView.tableFooterView中。


使用[self.view addSubview: activity];将指示符添加到父视图而不是tableView。 希望这会有效..