2011-09-14 31 views
20

Trong ứng dụng iPhone của tôi, tôi đang tải xuống một số dữ liệu từ máy chủ FTP. Để hiển thị hành động tôi đang sử dụng UIActivityIndicator. Nếu tôi đặt UIProgressView ở đó thay vì UIActivityIndicator, nó sẽ phù hợp hơn. Làm cách nào để sử dụng UIProgressView trong khi tải xuống một số dữ liệu? Ai có thể cho tôi một liên kết hướng dẫn hoặc mã ví dụ? Cảm ơn trước.cách sử dụng thanh tiến trình trong ứng dụng iphone

+0

bạn có đang sử dụng phương pháp NSURLConnection- không? fro tải về fton fron? – Ketan

+0

Hãy thử thư viện HUD này cho iOS trong https://github.com/shubh10/JustHUD –

Trả lời

41

đầu tiên bạn tạo IBOutlet trong file .h

IBOutlet UIProgressView * threadProgressView; 

Sau đó, trong tập tin .m trong viewDidLoad đầu tiên thiết lập tiến độ 0.0 và sau đó gọi phương thức makeMyProgressMoving

threadProgressView.progress = 0.0; 
    [self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil waitUntilDone:NO]; 

rồi thêm phương thức dưới đây

- (void)makeMyProgressBarMoving { 

     float actual = [threadProgressView progress]; 
     if (actual < 1) { 
      threadProgressView.progress = actual + ((float)recievedData/(float)xpectedTotalSize); 
      [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(makeMyProgressBarMoving) userInfo:nil repeats:NO]; 
     } 
     else{ 



     } 

    } 

cũng cung cấp đánh giá của bạn để tìm câu trả lời. nó có ích cho bạn không?

4

Nó khá đơn giản. Bạn chỉ cần đặt giá trị phù hợp của thuộc tính progress của UIProgressView.

Trong đại biểu của NSURLConnection bạn sẽ nhận được lượng dữ liệu bạn đang chờ tải xuống và cập nhật progress trong khi tải xuống. Progress được biểu diễn bằng một giá trị dấu phảy động nằm trong khoảng từ 0,0 đến 1,0, trong đó 1,0 cho biết hoàn thành nhiệm vụ.

+0

nhanh chóng có thể cho tôi một số mã mẫu không? – Ravi

4

Bạn có thể hiển thị tiến độ thanh tiến trình với các dòng mã

-(void) connection:(NSURLConnection *) connection 
didReceiveData:(NSData *) data { 
    if (file) 
    { 
     [file seekToEndOfFile]; 
     progressView.progress = ((float)recievedData/(float) xpectedTotalSize); 
    } 
    [file writeData:data]; 
    recievedData += data.length; 
    NSLog(@"Receiving Bytes: %d", recievedData); 
} 
2

Một trong các tùy chọn là AFNetworking. AFURLConnectionOperation cũng cho phép bạn dễ dàng truyền tải lên và tải xuống, xử lý các thách thức xác thực, theo dõi quá trình tải lên và tải xuống cũng như kiểm soát hành vi hoặc yêu cầu lưu vào bộ nhớ cache.

0

lưu ý: self.progressionBalance.progress = 5.0/10.0;

bạn phải đặt số thập phân.

Các vấn đề liên quan