2015-11-30 2 views
0

Моя песня играет из класса-помощника (из NSObject), и я хочу обновить интерфейс в представлении, я знаю один метод PostNotification. Есть ли другое решение?непрерывное обновление значения из NSObject Класс

+(void)playRemoteFile:(NSString*)songURL { 

    [[AFSoundManager sharedManager] startStreamingRemoteAudioFromURL:songURL andBlock:^(int percentage, CGFloat elapsedTime, CGFloat timeRemaining, NSError *error, BOOL finished) { 

     if (!error) { 
      // I want to update GUI here 
      //_slider.value = percentage * 0.01;     
     } 
    }]; 
} 
+3

делегата. Блок. – Avi

+0

Я не знаю, что вы можете написать код? @Avi –

+1

Ознакомьтесь с шаблоном делегата и блоками. Пригодность для вашего сценария должна быть очевидной. – Avi

ответ

2

Если вы звоните playRemoteFile из ViewController и это можно изменить playRemoteFile method.How об изменении его по адресу:

+ (void)playRemoteFile:(NSString*)songURL andBlock:(void (^)(int percentage, CGFloat elapsedTime, CGFloat timeRemaining, NSError *error, BOOL finished))block { 
    [[AFSoundManager sharedManager] startStreamingRemoteAudioFromURL:songURL andBlock:^(int percentage, CGFloat elapsedTime, CGFloat timeRemaining, NSError *error, BOOL finished) { 
     block(percentage, elapsedTime, timeRemaining, error, finished) 
    }]; 
} 

Тогда в ViewController сделать это

[someObject playRemoteFile: songURL andBlock:^(int percentage, CGFloat elapsedTime, CGFloat timeRemaining, NSError *error, BOOL finished){ 
    if (!error) { 
     // update GUI here 
     //_slider.value = percentage * 0.01;     
    } 
}] 
+0

Это хорошо, но это даст мне время, когда я вызову метод, но не на экране Player Мне нужно время на экране плеера, и я могу изменить песню из любого класса. Так что я проголосовал вместо того, чтобы принимать. –

+0

Как я могу реализовать KVO в этом случае? –

Смежные вопросы