【问题标题】:UINavigationController doesn't fully push view and only changes the Navigation toolbar to the next view's toolbarUINavigationController 不会完全推送视图,只会将导航工具栏更改为下一个视图的工具栏
【发布时间】:2010-05-03 17:40:55
【问题描述】:

所以我有一个 iPhone 应用程序,它利用 UINavigationController 来设置视图。当应用程序第一次启动时,它会向用户显示一个 UITableViewController,用户可以选择一个项目,然后它会推送另一个视图。现在我设置了它,以便我的应用程序记住用户的最后选择并自动选择它并加载正确的视图控制器。唯一的问题是,当我自动加载下一个视图时,我遇到了一个非常奇怪的故障..

当视图被按下时,导航工具栏将发生变化,以便显示指向上一个视图的后退按钮,但不会显示下一个视图。相反,它将继续显示表格视图,我也可以与之交互。我可以按后退按钮,它会将工具栏改回来,并且仍然显示表格视图。然后当我选择一个项目时,它会很好地加载视图。

感谢您的帮助。

代码:

我根据是否可以连接到服务器来决定是否推送视图控制器。我在后台线程中执行此操作:

- (void)startingThread
{    
    [NSThread detachNewThreadSelector:@selector(loginThread:) toTarget:self withObject:communicator];
}

- (void)loginThread:(MowerCommunicator *)communicator
{
    //If it can connect, launch thread complete.
    [self performSelectorOnMainThread:@selector(loginThreadComplete:) withObject:communicator waitUntilDone:NO];
}

- (void)loginThreadComplete:(MowerCommunicator *)communicator
{
    //push view controller
}

现在我添加了 NSLog 语句来跟踪视图是否真正“显示”并且 viewWillAppear 和 viewDidAppear 都被调用。我还检查了导航控制器的委托方法,它们也被调用了。

我有一个视图,它是初始启动视图,它从服务器读取以确定在下一个表视图中显示的内容。这被推得很好,当 tableview 被推时,我隐藏了后退按钮,这样用户就无法在不关闭应用程序的情况下返回第一个视图。然后 tableview 查看 NSUserDefaults 中的变量以确定是否存在已保存的索引,然后推送下一个视图控制器。这就是故障发生的时候。如果我然后按下后退按钮“返回”到表格视图(这实际上只是更改了导航工具栏),然后我从表格视图中选择了一个项目,它会正确加载下一个视图。此外,当用户从表格视图中按下项目以及应用程序自动加载视图时,我会调用完全相同的方法。

【问题讨论】:

  • 请发布一些代码(可能是您的应用委托)。

标签: iphone uinavigationcontroller toolbar uinavigationbar push


【解决方案1】:

最简单的解释是您将初始 tableviewcontroller 推送到导航控制器的堆栈中两次。

如果您将初始 tableviewcontroller 设置为 nib 中导航的第一个控制器,但在尝试自动显示堆叠视图时将相同的控制器推入堆栈,您将得到您所描述的内容。导航从笔尖的控制器开始,然后在其上推送另一个实例。

您应该在执行自动推送之前和之后记录导航的viewControllers 属性,以查看堆栈的实际状态。

【讨论】:

  • 感谢您的回复。我认为我不会两次推送视图控制器,因为我有一个定时器,当推送后续视图并且该定时器被激活时,该定时器会被激活。
  • 我输出了 viewControllers 堆栈,一切看起来都不错。它显示了 tableviewcontroller,然后是它上面的另一个 viewcontroller。
  • 是否显示主控制器的视图第二次出现?如果您有一个带有后退按钮的导航栏,则导航堆栈必须在堆栈上至少有两个控制器。导航栏不知道如何正确显示前一个视图控制器指向。您可能希望在设置自动视图层次结构的位置发布代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多