Iphone 为什么赢了';t出现此代码时,返回按钮(UINavigationController问题)

Iphone 为什么赢了';t出现此代码时,返回按钮(UINavigationController问题),iphone,ios,uinavigationcontroller,uitableview,uibarbuttonitem,Iphone,Ios,Uinavigationcontroller,Uitableview,Uibarbuttonitem,似乎无法使后退按钮显示在UINavigationController流中。我只是想让它自动触发当前控制器的弹出,以返回到父控制器 我有点困惑,最起码需要的是获得一个自动后退按钮(我指的是一个带有父控制器标题的按钮和一个箭头指向左后方的按钮),然后需要做什么来定制超出此范围的东西。我只是在这个阶段寻找前者 @implementation AppointmentListController - (void)viewDidLoad { [super viewDidLoad]; sel

似乎无法使后退按钮显示在UINavigationController流中。我只是想让它自动触发当前控制器的弹出,以返回到父控制器

我有点困惑,最起码需要的是获得一个自动后退按钮(我指的是一个带有父控制器标题的按钮和一个箭头指向左后方的按钮),然后需要做什么来定制超出此范围的东西。我只是在这个阶段寻找前者

@implementation AppointmentListController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"Detailed View";
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
    self.navigationItem.backBarButtonItem = backButton;
    [backButton release];
}
获取此视图的代码(即父控制器中的代码):

编辑:PS与上面的代码我实际上没有看到任何按钮在左边出现


EDIT2:David,我在RootViewController中尝试了以下backbutton代码(并将其从AppointmentListController中拉出),但是它仍然没有显示任何后退按钮

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
EDIT3:David-实际使用了以下代码,除了文本是“back”,而不是像我在后面一样的父控制器的标题-尝试删除.title=行,但没有出现按钮

// create a custom navigation bar button and set it to always say "Back"
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];

EDIT4-很糟糕-我没有设置父控制器的标题,所以我猜在本例中它根本没有尝试设置后退按钮-因此向父控制器添加“self.title=@“Views”;“修复了一些问题(并删除了我手动设置后退按钮标题的行)


EDIT5-对于像我一样感到困惑的人-因此最终您根本不需要父控制器中的任何BackbarButtonim设置代码-只需确保父控制器具有“标题”设置,然后事情似乎会自动运行-doh

当视图控制器位于导航堆栈中另一个视图控制器的后面时,将显示BackbarButtonim。换句话说,如果要将视图控制器推到其顶部,而不是在“后退”按钮中看到“详细视图”,那么它将是一个取消按钮

要获得所需的行为,请使用leftBarButtonItem

self.navigationItem.leftBarButtonItem = backButton;

调用view did lOad时,适当的导航栏不在堆栈上,您应该在UIViewController的viewdidappear方法中编写代码。后退按钮指的不是顶部控制器,而是控制器堆栈控制器的第二个。您可以在detailViewController上单击“后退”按钮。您应该将其放在UITableViewController上。

如果您先设置viewController标题(
self.title
),则返回按钮将自动显示

然后,如果从标题为“first view”的视图控制器中按下视图控制器,则按下的视图控制器将有一个带有标签“first view”的后退按钮

如果未设置标题,则“自动后退”按钮仅显示在第三个按下的视图上,而不是之前

firstController (title: "", back: NO) -> secondController (title: "", back: NO) -> thirdController (title: "", back: YES)

我不知道是虫子还是他们想要的。我阅读了UINavigationController指南,但没有看到任何相关内容。

David,我尝试在RootViewController中按下以下backbutton代码(并将其从AppointmentListController中拉出),但它仍然没有显示任何后退按钮?将代码放在我尝试查看的EDIT2区域-重试,这肯定是第一次出错-将我在主要帖子中使用的代码放在参考位置h..我注意到的唯一一点是文本是“back”,而不是父控制器的标题-我尝试删除临时BarButtoItem.title=行,但仍然不起作用,当我这么做时,bad根本没有按钮-我没有设置父控制器的标题,所以我想在本例中,它根本没有尝试设置后退按钮-因此在父控制器中添加“self.title=@“Views”;“修复了一些问题(并删除了我手动设置后退按钮标题的行)糟糕的是,我没有设置父控制器的标题,所以我想在本例中,它根本不会尝试设置一个后退按钮-因此在父控制器中添加“self.title=@“Views”;“修复了一些问题(并删除了我手动设置后退按钮标题的行),我将此Simon设置为三级,然后我得到了一个按钮,但这是一个正常的取消按钮。它不是一个带有父控制器标题的后退按钮,还有一个指向左边的小左手柄箭头作为按钮的一部分?我不知道你想让应用程序看起来像什么,然后你将按钮设置为取消按钮,但是你不想让它成为一个取消按钮吗?如果我不清楚的话,很抱歉-我只是想让左边的标准按钮(对于UINavigationController)类型的流返回(或向上一级控制器)-我在iPhone应用程序中看到它们是一个按钮,但在按钮设计中有一个指向左边的指针箭头-我真的只是想让其中一个出现&有点困惑,在UINavigationController设置中有一个父控制器的情况下,你至少要做什么,然后将下一个子控制器弹出到它上
firstController (title: "", back: NO) -> secondController (title: "", back: NO) -> thirdController (title: "", back: YES)