svprogresshud не отображается в xcode5 ios7

Я пытаюсь использовать SVProgressHUD с cocoapods. Я установил его в своем рабочем пространстве xcode, следуя многочисленным онлайн-учебникам. Это кажется достаточно простым в использовании, но я не могу заставить его работать. Вот мой код для загрузки данных из приложения гнилой помидоры. Я хочу показать "загрузку", пока сетевой запрос делает свое дело. Мне интересно, если это вопрос пользовательского интерфейса? Я добавил спящий запрос внутри сети, потому что результаты возвращались слишком быстро!

- (void) reload{
    [SVProgressHUD showWithStatus:@"Updating" maskType:SVProgressHUDMaskTypeBlack];

    NSString *url = @"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/top_rentals.json?";

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        [NSThread sleepForTimeInterval:3];
        NSDictionary *object = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        NSMutableArray *array = [[NSMutableArray alloc]initWithArray:[object objectForKey:@"movies"]];
        self.movies = [[NSMutableArray alloc]init];

        for(NSDictionary *item in array){
            SFMovie *movie = [[SFMovie alloc]initWithDictionary:item];
            [self.movies addObject:movie];

        }
                [SVProgressHUD dismiss];
        [self.tableView reloadData];
    }];
}

РЕДАКТИРОВАТЬ для комментария: перезагрузка вызывается для обоих методов инициализации (так как я использую раскадровку для этого проекта)

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        [self reload];
    }
    return self;
}
- (id) initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if(self){
        [self reload];
    }
    return self;
}

Второе РЕДАКТИРОВАНИЕ: я добавил выпадающий список для обновления, и при обновлении таблицы отображается "обновление...". Но это не отображается на init.

- (void)viewDidLoad
{
    [super viewDidLoad];


    UIRefreshControl *refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
    refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to refresh..."];
    self.refreshControl = refreshControl;   
}

- (void)refresh:(UIRefreshControl *)sender{
    [self reload];
    [sender endRefreshing];
}

Так что я думаю, что я не могу запустить пользовательский интерфейс на методах init, так как представление не готово. Я сейчас вызываю метод перезагрузки на view didload, и это работает файл. Спасибо, Джон!

1 ответ

Решение

В любой init методы, возиться с иерархией представлений - сложная задача - сохранить эту логику в viewDidLoad чтобы избежать любых этих модификаций (особенно при инициализации раскадровки).

Другие вопросы по тегам