Обработка метода после загрузки представления - PullRequest
0 голосов
/ 08 июня 2010

Я реализовал подпредставление, которое должно загружаться сразу после нажатия кнопки в родительском представлении. После загрузки подпредставления (которое в основном содержит указатель активности) программа должна обработать в нем метод (который получает данные с сервера, а значит, требует времени).

Однако я не могу этого сделать.

Что происходит сейчас, когда я нажимаю кнопку в родительском представлении, он сначала обрабатывает метод и только после этого загружает подпредставление на экране.

Почему это так? Есть ли какие-то конкретные функции, которые я мог бы использовать для загрузки моего метода только после загрузки представления?

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Я столкнулся с той же проблемой, и я использовал NSAutoreleasePool и решил эту проблему. Я надеюсь, что это поможет вам.

- (void)viewDidLoad {

   [self performSelectorInBackground:@selector(loadXml) withObject:nil];

 }

 -(void) loadXml{

        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

       NSString * path =@"http:www.YOUR_RSS_FEED.com";

       [self parseXMLFileAtURL:path];       //(Instead of ViewDidAppear)

      [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

       [pool drain];

   }

Спасибо.

0 голосов
/ 08 июня 2010

Несколько разных подходов:

Если подпредставление имеет функцию загрузки изображения и выполнения более сложных задач, чем просто представление, хорошим подходом будет преобразование его во ViewController.

В верхнем ViewController используйте:

- (void) loadView { 
    [super loadView];
}

для настройки вещей, которые должны быть готовы при отображении вида.

Использование:

-(void) viewDidLoad {

}

для дополнительной настройки.

В вашем случае это звучит так, как будто вам нужно добавить индикатор в метод loadView, а затем начать извлечение данных в методе viewDidLoad.

Если вы обращаетесь к веб-службам и т. Д., Всегда делайте это в другом потоке. (посмотрите на NSOperation для хорошего, простого способа достигнуть этого).

...