Я пытался добавить кнопку после того, как парсер (в отдельном потоке) завершен.Я понимаю, что вы не можете взаимодействовать с элементами пользовательского интерфейса в любом потоке, кроме основного.
Я не хочу использовать таймер или оператор while ... поэтому мой вопрос
Парсер готов Что вы предлагаете мне сделать, чтобы добавить кнопку в представление?Я не хочу, чтобы это было добавлено раньше, потому что пользователь попадет в пустую таблицу.Я также не хочу, чтобы перезагрузить таблицу, когда это сделано, потому что представляет другие проблемы для меня.
executeSelector в основном потоке, похоже, не работает для меня ..?Я немного потерян здесь ...
Есть предложения?
Здесь я начинаю другой поток, чтобы запустить парсер (в AppDelegate)
// begin background downloads
[NSThread detachNewThreadSelector:@selector(parseNewData) toTarget:self withObject:nil];
Моя функция parseNewData (в AppDelegate)
-(void)parseNewData {
//start network activity spinner and release controller when done
RootViewController * root = [[RootViewController alloc] init];
[root downloadIcon];
[root release];
//create pool to avoid memory leak
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// get the XML path and start parsing
NSURL *pathURL = [NSURL URLWithString:@"http://www.mysite.com/file.xml"];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:pathURL];
[parser setDelegate:self];
[parser parse];
//drain pool
[pool drain];
[pool release];
}
Парсер завершил (в AppDelegate)
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// parser is finished, we can now kill the network activity icon on root view controller
RootViewController * root = [[RootViewController alloc] init];
[root killDownloadIcon];
[root performSelectorOnMainThread:@selector(unhideShowtimesButton) withObject:nil waitUntilDone:NO];
[root release];
}
Моя кнопка unhideShowtimesBonton on (в RootViewController)
-(void)unhideShowtimesButton {
showtimesButton.hidden = FALSE;
}
IЯ делаю это для моего unhideShowtimesButton (проверяется точкой останова), но он просто полностью игнорирует скрытое = False.