Не удается скрыть кнопку «Назад» в навигационном приложении для iPhone - PullRequest
0 голосов
/ 04 ноября 2010

Моя проблема в том, что кнопка «Назад» не восстановит свою видимость, если мой веб-запрос не завершится до или вскоре после запуска 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];
}

Любая помощь приветствуетсяЯ с трудом могу @ # $ & ^ поверить, что сокрытие кнопки в пользовательском интерфейсе может привести к таким потерям времени.

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Я не смог решить эту проблему.Вместо этого я настроил свою логику приложения, чтобы скрыть кнопку «назад» не нужно.

1 голос
/ 04 ноября 2010

Попробуйте использовать этот метод UINavigationItem:

- (void)setHidesBackButton:(BOOL)hidesBackButton animated:(BOOL)animated
...