2010-10-27 56 views
0

我有一个UINavigationController,完整的表格视图和相关的魔法。如何创建一个默认的“返回”状态的UINavigationController?

的数据,我填充该表视图从也可以有多个类别的项目,但对于用户的默认视图将是一个在他们正在查看该项目的所有,然后他们有能力向后移动到不同的表格视图,这将允许他们选择不同的类别,然后返回原始表格视图并填充相应的数据。

什么是这个正确的方法呢?我似乎无法绕过我的脑袋,不知道如何让导航控制器给我一个后退按钮(具有适当的连线动作),而无需来自堆栈中的前一个视图(在启动时并不存在if我开始从本质上是详细信息视图,在堆栈方面的用户。)

另外,返回按钮标题应为“组”,而不是“后退”,但是这其实只是一个实现细节。 :)

更新:这个问题最终表现在生产代码,这里是我如何固定它:

UINavigationController的笔尖被创建,设置为“组”的观点根视图。然后,在我的应用程序委托中,我在应用程序启动时将第二个视图推入堆栈。

这对于实现正确的堆栈很合适,但对后退按钮标题没有帮助,因为导航控制器似乎不想从根视图抓取标题,而是显示背面按钮“Item”作为标题。

因此,在推进认为,viewDidLoad,我设置:

self.navigationController.navigationBar.backItem.title = @"Groups"; 

而且奏效了。

这样做的唯一潜在缺点是,如果推送的视图控制器曾用于下方视图不是组视图的场景,但由于此特定应用程序的设计确保永不会发生我接受了这个失败。 ;)

另一个更新

我是个白痴。只需在Interface Builder中设置由navigationController提供的navigationItemtitle属性,并且繁荣,没有问题。或者在代码中完成。没关系,只是不要通过设置上面显示的backItem.title方式来实现。这只是愚蠢的。

回答

1

在应用程序中的应用程序委托的.m文件中:didFinishLaunchingWithOptions:方法只需像您一样将[self.navigationController pushViewController:your_view_controller animated:YES];推向您的视图控制器,它应该在应用程序的第一个视图控制器出现之前将它们推开。

要更改按钮组的文本推你的控制器之前,只需要调用这个:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Groups" style: UIBarButtonItemStyleBordered target: nil action: nil]; 
[[self navigationItem] setBackBarButtonItem: newBackButton]; 
[newBackButton release]; 
+0

这个问题最终表现在实际的生产代码,并修复entailed设置'self.navigationController.navigationBar。在推送的视图控制器上的'viewDidLoad'里面的backItem.title'。这是一样的事情。有点。 ;) – 2011-02-14 00:41:18

+0

我是个白痴。请参阅我的(希望)最终更新。我基本上做了你告诉我要做的事情,但在Interface Builder中。我很高兴这对我来说是一次极具吸引力的学习体验。 – 2011-02-24 03:45:02