使用UIAlertView的UIAcitivity指标

时间:2014-08-07 19:26:15

标签: ios uiview uiactivityindicatorview

我正在开发一个应用程序,用户可以通过UIAlertView确认某些操作,如果他确认,我调用一个处理操作的方法,然后我准备弹出我在的视图返回调用该方法后的另一个视图。

我想显示UIActivityIndicatorView,如果用户按下确认,只要执行该方法并转到其他视图即可。我在正确的位置使用了startAnimatingstopAnimating,但我从来没有看到显示的用户界面UIActivityIndicatorView,而不是一秒钟。

我猜它与UIAlertView引起的一些UI问题有关,但不确定我是否正确。我只需要了解如何正确使用UIActivityIndicatorView方法执行时间。

我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    self.activityIndicator.alpha = 1.0;
    self.activityIndicator.hidesWhenStopped = YES;
    self.activityIndicator.center = self.view.center;
    [self.view addSubview:self.activityIndicator];
}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(buttonIndex == 1) {

        [self.activityIndicator startAnimating];

        ContactsTableViewController *contactTableView = [self getContactsTVC];

        [contactTableView applyActionOnCells];

        // doing some setup before poping off to the root view controller of my nav controller 

        [self.activityIndicator stopAnimating];

        // then go to rootViewController
        [self.navigationController popToRootViewControllerAnimated:YES];
    }
}

1 个答案:

答案 0 :(得分:1)

我不是百分百肯定,但尝试发表评论stopAnimating,看看它是否显示出来。

如果有帮助,applyActionOnCells可能会阻止你的主线程(所有UI内容也会发生)并且指针在你再次隐藏之前永远不会有机会出现。

在这种情况下,请尝试在后台进行applyActionOnCells调用:

if(buttonIndex == 1) {
    [self.activityIndicator startAnimating];

    __block typeof(self) bself = self;
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        ContactsTableViewController *contactTableView = [bself getContactsTVC];
        [contactTableView applyActionOnCells];

        dispatch_async(dispatch_get_main_queue(), ^{
            [bself.activityIndicator stopAnimating];

            // then go to rootViewController
            [bself.navigationController popToRootViewControllerAnimated:YES];
        });
    });
}

修改:另请参阅an earlier question