UIAlertView setMessage什么都不做

时间:2014-07-17 11:39:46

标签: ios progress-bar uialertview

我试图在UIAlertView中显示上传进度。我有一个带有AFHTTPClient服务器子类的API和一些代码,我将进度信息发送到我的视图

[operation setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
 {
     float progress = totalBytesWritten / (float)totalBytesExpectedToWrite;
     request *svc = [[request alloc] init];
     [svc setProgress:[NSNumber numberWithFloat:progress]];
     NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);

 }];

上传过程开始时,我在视图中创建了UIAlertView

API文件

if (uploadFile) {
        [formData appendPartWithFileData:uploadFile name:@"file" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
        request *svcAlert = [[request alloc] init];
        [svcAlert showProgressAlert];
    }

查看档案

- (void) showProgressAlert{
progressBarAlert = [[UIAlertView alloc] initWithTitle: @"Идет загрузка"
                                                      message: @"0"
                                                     delegate: self
                                            cancelButtonTitle: nil
                                            otherButtonTitles: nil];

progressView = [[UIProgressView alloc] initWithProgressViewStyle: UIProgressViewStyleBar];

progressView.frame = CGRectMake (20, 20, 50, 30);

[progressBarAlert addSubview:progressView];


[progressBarAlert show];
}

然后在我的视图中我也试图用setMessage更改UIAlertView消息参数,但没有任何反应。 ProgressView并没有出现在AlertView中,即使我想用addSubview添加它也是如此。

-(void) setProgress: (NSNumber *) progress {
progressView.progress = [progress floatValue];
//progressBarAlert.message = [NSString stringWithFormat:@"%@", progress];
[progressBarAlert setMessage:[NSMutableString stringWithFormat:@"Загрузка %@", progress]];

}

最后一个问题,如何在不按取消按钮的情况下关闭UIAlertView?

此外,我还尝试将subView添加到我的视图中而不是使用alertView,但应用程序因未捕获的异常而崩溃。也许有人可以就此任务给我任何建议。

1 个答案:

答案 0 :(得分:0)

我将向您推荐有关UIAlertView Class reference的Apple文档,特别是

  

UIAlertView类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

您尝试执行的操作[progressBarAlert addSubview:progressView];是不允许的,并且会在Apple审核流程中拒绝您的应用。在iOS7中,addSubview:从不在UIView上调用超级,因此实际上并没有做任何事情。所以我根本不建议这样做。但是,您可以使用https://github.com/wimagguc/ios-custom-alertview之类的自定义提醒视图来获取所需信息。