UITableView Индикатор активности Apple - PullRequest
3 голосов
/ 20 марта 2012

Моя проблема довольно распространена. Я хочу показать некоторые «загрузочные» вещи, пока данные, которые будут отображаться в таблице, загружаются. Но все решения, которые я видел до сих пор, это либо добавить несколько блесен в ячейки, либо добавить полупрозрачный вид поверх приложения.

То, что я хочу активировать, - это то, что делает яблоко в своих приложениях (например, YouTube). Например, вращающееся колесо со словом «Загрузка» отображается на белом фоне, а затем отображаются данные.

Я также видел какое-то решение с группированным стилем, но мой стол имеет простой стиль, так что я думаю, что он мне не очень помогает.

EDIT

Мой окончательный код выглядит так:

- (void)loadImagesData
{
    UIView *tableView = self.view;
    self.view = [[LoadingView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)];
    dispatch_queue_t downloadQueue = dispatch_queue_create("flickr downloader", NULL);
    dispatch_async(downloadQueue, ^{
        NSArray *images = [FlickrFetcher photosInPlace:self.place maxResults:MAX_PHOTOS];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.view=tableView;
            self.imagesData = images;
        });
    });
    dispatch_release(downloadQueue);
}

и метод setData вызывает reloadData в табличном представлении.

Ответы [ 2 ]

10 голосов
/ 20 марта 2012
  1. Создайте UIViewController (не UITableViewController - даже если вы собираетесь представить таблицу)
  2. Создайте представление «Загрузка» и добавьте его в качестве выхода
  3. Создайте табличное представление и добавьте его в качестве выхода
  4. Когда контроллер представлен, установите его свойство view так, чтобы оно указывало на ваше представление «Загрузка». Когда все задачи завершены, переключите представление с табличным представлением

Только не забудьте добавить протоколы и методы, используемые для управления вашим столом

Я надеюсь, что это поможет вам

2 голосов
/ 16 февраля 2016

Еще один ответ, чтобы показать индикатор активности внутри UITableViewController, не меняя его на UIViewController.

  1. В раскадровке добавьте индикатор активности внутри представления таблицы (но не надTableViewCell!).Он будет внутри заголовка табличного представления (не заголовка раздела!)

  2. Подключите выход индикатора активности к вашему файлу класса

    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
    
  3. Используйте эти функции, чтобы показать или скрыть индикатор активности

    // enable tableview and hide the activity indicator
    func activateScreen() {
    self.tableView.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: tableView.frame.width, height: 0)
    self.tableView.tableHeaderView = self.tableView.tableHeaderView // necessary to really set the frame
    activityIndicator.stopAnimating()
    }
    
    // disable tableview animate the activity indicator
    func disactivateScreen() {
    self.tableView.tableHeaderView?.frame = tableView.frame
    self.tableView.tableHeaderView = self.tableView.tableHeaderView // necessary to really set the frame
    activityIndicator.startAnimating()
    }
    

Наслаждайтесь!

...