Моя проблема в том, что кнопка «Назад» не восстановит свою видимость, если мой веб-запрос не завершится до или вскоре после запуска ViewWillAppear
.
У меня в приложении для iPhone 4.0 на основе навигации используется простой Rootи подробный вид настройки.Я работаю с данными, которые возвращаются из веб-службы, поэтому, когда я перемещаю свое подробное представление в его функцию ViewDidLoad
, я вызываю метод веб-службы в отдельном потоке, и жизненный цикл Iphone выполняет свою работу в основном потоке.Я должен отключить / скрыть кнопку «Назад» до тех пор, пока веб-запрос не завершится (или не будет выполнен), поэтому я вызываю self.navigationItem.hidesBackButton = YES;
в ViewDidLoad и self.navigationItem.hidesBackButton = NO;
в функции делегата, которая срабатывает после того, как мой веб-запрос завершился или не прошел.* Я уже попробовал следующее:
[self.navigationItem performSelectorOnMainThread:@selector(setHidesBackButton:) withObject:NO waitUntilDone:NO];
[self.navigationItem setHidesBackButton:NO];
[self.view setNeedsDisplay];
[self.navigationController.view setNeedsDisplay];
UINavigationItem *nav = self.navigationItem;
nav.hidesBackButton = NO;
Код Root View Controller Push:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ArticleViewController *articleViewController = [[ArticleViewController alloc] initWithNibName:@"ArticleViewController" bundle:nil];
NewsArticle *newsArticle = [newsItems objectAtIndex:indexPath.row];
articleViewController.articleID = newsArticle.newsID;
[self.navigationController pushViewController:articleViewController animated:YES];
[newsArticle release];
[articleViewController release];
}
Подробности Просмотр кода контроллера:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.hidesBackButton = YES;
id scrollView = [[[self webContent] subviews] objectAtIndex:0];
if([scrollView respondsToSelector:@selector(setBackgroundColor:)] )
{
[scrollView performSelector:@selector(setBackgroundColor:)
withObject:[UIColor blackColor]];
}
[self getNewsArticle];
}
//Fires when the web request has finished
- (void) finish:(NewsArticle *)newsArticleFromSvc {
self.navigationItem.hidesBackButton = NO;
self.newsArticle = newsArticleFromSvc;
[self bindNewsArtice];
}
Любая помощь приветствуетсяЯ с трудом могу @ # $ & ^ поверить, что сокрытие кнопки в пользовательском интерфейсе может привести к таким потерям времени.