我有一个UINavigationController
,包括表格视图和相关的魔法。
我正在填充该表视图的数据可能包含来自多个类别的项目,但用户的默认视图将是他们正在查看项目的所有的数据,然后他们能够向后移动到另一个表视图,允许他们选择不同的类别,然后返回到原始表视图,并填充适当的数据。
这是什么方法?我似乎无法理解如何让导航控制器给我一个后退按钮(有适当的有线操作),而不是来自堆栈中的前一个视图(如果在发布时它不会真正存在的话我以堆栈术语从基本上是详细视图的用户开始。)
此外,后退按钮应标题为“Groups”,而不是“Back”,但这实际上只是一个实现细节。 :)
更新:此问题最终在生产代码中体现出来,以下是我修复它的方法:
我的UINavigationController
是在笔尖中创建的,根视图设置为“组”视图。然后,在我的app委托中,我在应用程序启动时将第二个视图推送到堆栈。
这对于实现正确的堆栈工作正常,但这对后退按钮标题没有帮助,因为导航控制器似乎不想从根视图中获取标题,而是显示后退按钮以“项目”作为标题。
因此,在推送的视图中,在viewDidLoad
中,我设置了:
self.navigationController.navigationBar.backItem.title = @"Groups";
这就是诀窍。
这样做的唯一潜在缺点是,如果推送的视图控制器曾经用于下面的视图不是组视图的情况,但由于此特定应用程序的设计确保永远不会发生,我接受了这个失败。 ;)
另一次更新:
我是个白痴。只需在Interface Builder中设置title
提供的navigationItem
属性,就可以了。或者在代码中执行。没关系,只是不要通过设置我在上面显示的navigationController
方式来实现。那只是愚蠢。
答案 0 :(得分: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];