uialertview上的活动指标

时间:2012-06-29 14:00:35

标签: iphone uialertview uiactivityindicatorview

如果用户点击uialertview上的某个按钮,我需要花费一些时间。我希望在完成后通知用户一个活动指示器。我不确定究竟需要为所需的输出做些什么。这是流程:

用户点击按钮1'建造塔'。

UIAlertview显示“你想要这样做,需要时间”

用户点击“是”: 现在我处于alertview Delegate方法中。

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

if (buttonIndex == 1) {//Yes the user wants to do this
 //Show activity indicator here

    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]     initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    indicator.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50);
    [indicator startAnimating];
    [alertView addSubview:indicator];
    [indicator release];

//
[SimpleFunctions doThatMethodThatTakesALongTime];
 //remove activity indicator here

    }

}

在这里,我想在“大处理”之前显示一个活动指标。

向alertview添加活动指示器的示例显示如何将指示符添加到上述alertview。但我不希望该指示器出现,直到用户点击“是”。 关于如何实现这一点的任何指示都会很棒。我希望我明白这个问题,如果没有,请告诉我,

由于

4 个答案:

答案 0 :(得分:0)

警示视图参考:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

在委托方法- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex中,您可以在那里向alertView添加内容。

E.g。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    UIActivityIndicator * ai = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [alertView addSubview:activityIndicator];
    activityIndicator.frame = CGRectMake(80, 0, 30, 30);
    [ai startAnimating];
}

您希望将ai添加为ivar(类变量),以便稍后将其删除。

[self.ai removeFromSuperview];

希望这有帮助。

编辑:要记住的一件事是,您可能需要自行管理解除警报视图。您可以使用警报视图中的方法- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated来解除它。

答案 1 :(得分:0)

下面:

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

if (buttonIndex == 1) {//Yes the user wants to do this
 UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc]
                initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];   
loading.frame=CGRectMake(150, 150, 16, 16);
[YOURAlertView addSubview:loading];
[SimpleFunctions doThatMethodThatTakesALongTime];
[self performSelector:@selector(turnOff:) withObject:nil afterDelay:1.0];

    }
}

-(void) turnOff {
[loading removeFromSuperview];
}

答案 2 :(得分:0)

在您的代表中根据您使用并制作标签以识别不同的警报......

UIAlertview * myAlertView = [[UIAlertView alloc] initWithTitle:@“正在加载”消息:@“你的消息”                                         委托:自我                                cancelButtonTitle:无                                otherButtonTitles:无];

 UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc]
            initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];   
 loading.frame=CGPointMake(myAlertView .bounds.size.width / 2, myAlertView .bounds.size.height - 40);
 [myAlertView addSubview:loading];
 [loading release];
 [myAlertView show];

这可能会对你有所帮助

答案 3 :(得分:0)

使用AlertView的边界来布局活动指标是一个好主意,但要注意,AlertView的边界在调用[alertView show]之前都是零。< / p>