Как правильно динамически создавать контент для UIView? - PullRequest
0 голосов
/ 01 октября 2009

У меня есть tableView со списком элементов. Когда выбор сделан, новый контроллер представления помещается в стек viewController viewController tableView.

У меня такой вопрос: одно из представлений в иерархии представлений, связанных с контроллером push-представлений, требует выборки данных из сети, прежде чем он сможет отобразить свой контент. Эта выборка выполняется асинхронно через [NSURLRequest requestWithURL: ...]. Как правильно передать данные в нужное представление и вызвать это представление перегруженным методом drawRect? В настоящее время я делаю это:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {


    [_connection release];
    _connection = nil;

    [self performSelectorOnMainThread:@selector(GetDataFromCloudAndCreateView)
                        withObject:nil 
                     waitUntilDone:NO];


}

Метод GetDataFromCloudAndCreateView создает экземпляр представления данных. К сожалению, ничего не отображается. Я пытался [myView setNeedsDisplay], но это не имеет никакого эффекта.

Может ли кто-нибудь набросать правильный способ сделать это? Спасибо.

1 Ответ

1 голос
/ 01 октября 2009

То, что я делал в прошлом в подобном случае, - это создание нового UIViewController в методе connectionDidFinishLoading:, а затем его нажатие. Вот так:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    [_connection release];
    _connection = nil;

    // Code to stop a loading indicator of some kind

    UIViewController *newView = [[SomeViewController alloc] initWithData:fetchedData];
    [self.navigationController pushViewController:newView animated:YES];
}

Метод initWithData: на новом контроллере заботится о любых переменных экземпляра, которые ему нужны, на основе данных, которые я ему передал, и затем, когда представление загружается, оно нарисует представление на основе этих переменных.

Надеюсь, что ответит на ваш вопрос.

...