У меня есть табличное представление (имя файла - five.m), которое отлично работает и правильно отображает данные в табличном представлении. Когда пользователь выбирает строку, он добавляет подвид, который показывает индикатор выполнения на том же экране. После добавления subview он запускает фоновый поток, который анализирует данные HTML и добавляет их в базу данных SQLite3. Фоновый поток, вставка данных SQLIte, анализ HTML - все работает нормально. Теперь, когда он завершается, он возвращается к Five.m в методе removeProgressInd, который удаляет индикатор выполнения и переходит в новое представление таблицы (имя файла - TitleOnly.m). Он успешно возвращается, поскольку я вижу все сообщения NSLog из метода removeProgressInd. Но код не останавливает индикатор прогресса и не переходит в новое табличное представление. Код работает без ошибок. Я попытался запустить тот же код в viewDidLoad и viewDidAppear вместо removeProgressInd, но вижу только сообщения NSLog. Вот мой код.
Five.m - tableview DidSelelectRow
{
// start ProgressInd
[self.view addSubview:self.progressInd];
// shows progress Indicator on screen when I run my app in simulator
// start Parsing Calculation in Background thread
if (appDelegate4.globalParsingCompletedFlag==@"0")
{
NSLog(@"starting backgroung thread- parsing calulation- because flag==0");
ParsingCalculation *parsC = [[ParsingCalculation alloc] init];
[queue addOperation:parsC];
[parsC performSelectorInBackground:@selector(main) withObject:nil];
[parsC release];
//successfully starts parsing in background
}
}
Код файла ParsingCalculation.m
- (void)main {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
//your code to do the operations...
appDelegate5=[[[UIApplication sharedApplication] delegate] retain];
NSLog(@"Now we are in ParsingCalulation.m");
//resultsFromURL is another method in parsingCalulation.m that does all parsing successfully
[self resultsFromURL:appDelegate5.globalLocationURL];
NSLog(@"Now we are moving back in Five.m -calling function removeProgressInd ");
[[Five shared] performSelectorOnMainThread:@selector(removeProgressInd)
withObject:nil
waitUntilDone:YES];
//it returns back to five.m successfully after finishing HTML Parsing
[pool release];
}
Five.m - метод removeProgressInd
-(void) removeProgressInd{
NSLog(@"Now we are back in Five.m -in function removeProgressInd ");
//remove progressInd from superview as parsing calculation has been completed
[progressInd stopAnimating];
[self.progressInd removeFromSuperview];
//move to TitleOnly.m tableview
NSLog(@"navigate to TitleOnly ");
TitleOnly *newView = [[TitleOnly alloc] initWithNibName:@"TitleOnly" bundle:nil];
[self.navigationController pushViewController:newView animated:YES];
[newView release];
}
Я вижу сообщение «перейти к TitleOnly» в консоли без каких-либо ошибок, это означает, что он успешно выполнил команды [progressInd stopAnimating] и [self.progressInd removeFromSuperview] без каких-либо ошибок, поскольку эти команды находятся непосредственно перед этим сообщением NSLog. Но это не убирает индикатор прогресса с экрана. Точно так же он не показывает табличное представление TitleOnly. ''
Как я могу это исправить? в чем проблема? Что я делаю неправильно?
Пожалуйста, ответьте как можно скорее.