0

所以在我的主窗口中我有这两个按钮“设置”(leftBarButtonItem)和“i”(信息按钮,rightBarButtonItem)”

当我按下信息按钮时,我得到“免费”后退按钮,但我必须以编程方式为设置按钮创建一个?这是为什么?

这是我在 viewDidLoad 中对按钮进行编程的方式

UIBarButtonItem *settingsBarButtonItem =[[UIBarButtonItem alloc]initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings:)]; 
self.navigationItem.leftBarButtonItem = settingsBarButtonItem;

UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
CGRect frame = infoButton.frame;
frame.size.width = 40.0f;
infoButton.frame = frame;
[infoButton addTarget:self action:@selector(about:) forControlEvents:UIControlEventTouchUpInside];
butInfo = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
self.navigationItem.rightBarButtonItem = butInfo;
4

1 回答 1

0

ViewController 是如何被调用的?一般来说,只有当视图控制器被父视图控制器推到导航堆栈上时,才会出现“免费”后退按钮。这可以通过 Segue(如果您使用 Storyboard),或通过 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated(给 UINavigationController 的消息)。

来自 UINavigationController 文档:如果顶级视图控制器没有自定义左栏按钮项,但前一个视图控制器的导航项在其 backBarButtonItem 属性中有有效项,则导航栏显示该项。

如果任何一个视图控制器都没有指定自定义条形按钮项,则使用默认的后退按钮并将其标题设置为前一个视图控制器的 title 属性的值——即视图控制器向下一层堆栈。(如果导航堆栈上只有一个视图控制器,则不会显示返回按钮。)

这意味着您必须设置父视图控制器的 Title 属性以显示带有其名称的后退按钮。

于 2013-10-06T22:13:47.443 回答