iOS - заголовок навигации не обновляется - PullRequest
0 голосов
/ 30 августа 2011

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

Проблема в том, что заголовок, похоже, не меняется на панели навигации.NSLogs выводят правильные значения, хотя.

Я помню эту проблему раньше и решал ее с помощью некоторого метода "refresh".

Вот соответствующий код.

-(void)playSequence
{
 if (([animatorViewController isAnimating] == FALSE) && (btnDisable == FALSE))
 {
  Sequence *tempSequence;
  tempSequence = [fullStepList objectAtIndex:lastPlayedSequence];
  self.title = [NSString stringWithFormat:@"Assembly - %@", tempSequence.subName];
  NSLog(self.title);
  [self startAnimator:tempSequence.imageNameScheme forNumFrames:tempSequence.numberOfFrames playInReverse:FALSE];
  tempSequence = nil;
  tempSequence = [fullStepList objectAtIndex:queuedSequence];
  self.title = [NSString stringWithFormat:@"Assembly - %@", tempSequence.subName];
  NSLog(self.title);
  tempSequence = nil;
 }
}

РЕДАКТИРОВАТЬ: Этот метод изменения названия работает в другом месте в этом классе.Кажется, проблема возникает, когда я пытаюсь установить его дважды, что вызывает проблему.

EDIT2: На самом деле он запускает оба изменения названия один за другим ... Тот факт, что он устанавливал его обратно в предыдущее, меня бросаловыкл.

Ответы [ 5 ]

1 голос
/ 30 августа 2011

Заголовок не будет обновляться до тех пор, пока не будет выполнен основной цикл выполнения.Если -startAnimator:forNumFrames: не вызовет основной цикл выполнения до его возврата, вы не увидите изменения.

1 голос
/ 30 августа 2011

Элемент навигации может содержать четыре вещи: leftBarButtonItem, rightBarButtonItem, title и titleView.Когда вам нужно изменить заголовок, вы должны назначить свой заголовок свойству title навигационного элемента, а не свойству заголовка вашего представления.Так это будет выглядеть так:

self.navigationItem.title = [NSString stringWithFormat:@"Assembly - %@", tempSequence.subName];

self.title указывает на заголовок вашего viewControllers, который не отображается на панели навигации.

0 голосов
/ 01 июля 2015

Я недавно оказался в похожей ситуации.Заголовок моего представления состоял из метки с NSMutableAttributedString.Вызов [self reloadInputViews] всякий раз, когда я обновлял свой заголовок, работал для меня.

0 голосов
/ 31 августа 2011

Страшный П.Е.Б.К.А.К. ошибка была причиной этой путаницы. На самом деле он запускает оба изменения названия один за другим ... Тот факт, что он возвращал предыдущее, меня отталкивал.

0 голосов
/ 30 августа 2011

Если вы размещаете UINavigationController в другом представлении, вам нужно сделать следующее:

self.yourNavigationController.title = @"title";

вместо

self.title = @"blah"

В противном случае вы просто меняете название хоста представлениянавигатор представления.Просто предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...