2014-11-26 2 views
0

В моем проекте я загружаю данные с сервера, загрузка кода находится в файле приложения Delegate.m и , когда я передаю статус загрузки (в байтах) объекту NSNotification. В моем ViewController я пытаюсь обновить UIProgressView, используя вышеуказанный статус загрузки. Когда я регистрирую статус Downlaoding (загруженные байты), я получаю правильное значение. Но когда я попытался показать это в UIProgressView и ничего не показываю.UIProgressView не обновляется в iOS

Код

App delegate.m

ViewController *viewC=[[ViewController alloc]init]; 
[viewC postNotificationWithValue:bytesDownloaded:totalSize]; 

В ViewController.m

- (void)viewDidLoad 
{ 
    _progreeView.progress = 0.0; //UIProgressView 

    NSString *notificationName = @"MTPostNotificationTut"; 

    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(useNotificationWithString:) 
    name:notificationName 
    object:nil]; 
} 





- (void)postNotificationWithString:(NSUInteger)current:(NSUInteger)total { 


    // NSLog(@"%f",(double)current/(double)total); 
    float status=(double)current/(double)total; 
    _downloadStatus.text=[NSString stringWithFormat:@"%f",status]; 

[_progreeView setProgress:status animated:YES]; 
} 

и мой UIProgressbar не обновляется вообще. Помогите мне

+0

Вы просто создать ViewController и чем настроить это значение слайдера? А как насчет процесса инициализации view и viewController? Вам нужно настроить представление viewController для представления перед обновлением индикатора прогресса анимированным способом ... Пожалуйста, приступайте к созданию простого приложения для iOS на основе http://www.raywenderlich.com/1797/ios-tutorial- How-to-create-a-simple-iphone-app-part-1 – ingaham

+0

У меня есть много содержимого в viewcontroller и delegaet, но я показываю только релевантное содержимое здесь –

ответ

1

У вас есть проверка, нет ли _progreeView не nil?! Почему не загрузите ViewController из nib:

NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"ViewController" 
                owner:self 
                options:nil]; 

ViewController *vc = (ViewController*)[viewArray objectAtIndex:0]; 

Во всяком случае, без слишком глубоко с вашим кодом, я думаю, что проблема в том, что, что и не обновить пользовательский интерфейс от основного потока. Убедитесь, что и обновление:

[_progreeView setProgress:status animated:YES]; 

С MAIN нити.

Любые изменения пользовательского интерфейса должны быть в основном потоке - Помните об этом!

Так и можно обернуть, что, как:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [_progreeView setProgress:status animated:YES]; 
} 
+0

Позвольте мне обновить мой код –

+0

, его не работает..i drag and drop один UIView в мой ViewController и на этом я добавил UIProgressView –

+0

У вас подключить это к вашему коду? – gran33