iOS - 导航标题不更新

时间:2011-08-30 19:08:32

标签: iphone ios uinavigationcontroller

我正在用这段代码做的是抓取一个图像序列,抓住它的名字。然后将视图的标题设置为播放序列的序列名称,然后将标题设置回旧标题。

问题是导航栏上的标题似乎没有变化。 NSLogs正在输出正确的值。

我记得以前遇到过这个问题并用一些“刷新”方法来解决它。

以下是相关代码。

-(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 个答案:

答案 0 :(得分:1)

导航项可能包含四个内容:leftBarButtonItem,rightBarButtonItem,title和titleView。当您需要更改标题时,您应该将标题分配给navigationItem的title属性,而不是视图的title属性。所以它看起来像:

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

self.title指向未在navigationBar中显示的viewControllers标题。

答案 1 :(得分:1)

在主运行循环执行之前,标题似乎不会更新。除非-startAnimator:forNumFrames:在返回之前调用主运行循环执行,否则您将看不到更改。

答案 2 :(得分:0)

如果您在另一个视图中托管UINavigationController,则需要执行以下操作:

self.yourNavigationController.title = @"title";

而不是

self.title = @"blah"

否则您只是更改托管视图导航器的视图的标题。只是一个猜测。

答案 3 :(得分:0)

可怕的P.E.B.K.A.C.错误是造成这种混乱的原因。它实际上是一个接一个地运行两个标题更改......事实上它将它重新设置为上一个让我失望。

答案 4 :(得分:0)

我最近发现自己处于类似情况。我的视图标题由带有NSMutableAttributedString的标签组成。每当我更新我的标题时,都会致电[self reloadInputViews]