0

如果用户单击 uialertview 上的某个按钮,我有一个耗时的步骤要做。我想在完成时用活动指示器通知用户。我不确定要获得所需的输出究竟需要做什么。这是流程:

用户单击按钮 1“建造塔”。

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

用户单击“是”:现在我在 alertview 委托方法中。

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

4 回答 4

0

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

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

例如

- (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警报视图上的方法将其关闭。

于 2012-06-29T14:09:38.013 回答
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];
}
于 2012-06-29T14:19:02.550 回答
0

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

UIAlertview *myAlertView = [[UIAlertView alloc] initWithTitle:@"Loading" message:@"Your Message" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];

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

这可能会帮助你

于 2012-06-29T14:21:40.697 回答
0

使用AlertView' 的边界来布局活动指示器是一个好主意,但请注意,在调用AlertView之前 ' 的边界都为零。[alertView show]

于 2013-03-04T10:56:10.110 回答