2014-12-11 3 views
0

Я новичок в разработке iOS, и одна вещь, которую я нахожу плохой с хорошим UX, является следующей.Показать только после получения данных от API

У меня есть вид, который выглядит, когда View load.

enter image description here

Но за кулисами API вызова получает данные и вызовов tableView.reloadData заполняющие во всех данных.

Проблемы
1. Я хочу только показать вид, когда заселены. значение, когда API возвращает результат и заполняет метки.
2. В то время как 1. работает, я хочу показать индикатор активности, позволяющий пользователю узнать, что мы работаем над получением данных.

Как это можно достичь? Я не знаю, что искать именно для этого.

ответ

1

Вам нужен асинхронный запрос с блоком/закрытием завершения.

Посмотрите на Alamofire, если вы используете Swift или AFNetworking, если используете Objective-C.

В Swift, вы могли бы сделать что-то вроде:

// Start animating some spinning wheel here 
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) 
     .response { (request, response, data, error) in 
        // Stop animating spinning wheel and call reloadData here 
        } 

В Objective-C, это было бы что-то вроде:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
// Start animating some spinning wheel here 
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    // Stop animating spinning wheel and call reloadData here 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

Ура!

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