UINavigationItem - 我的一个按钮没有“免费”后退按钮

时间:2013-10-06 20:37:15

标签: ios

所以在我的主窗口中我有两个按钮“settings”(leftBarButtonItem)& “i”(信息按钮,右边的BarButtonItem)“

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

以下是我在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;

1 个答案:

答案 0 :(得分:0)

ViewController是如何调用的? 通常,只有在父ViewController将视图控制器推入导航堆栈时才会出现“Free”后退按钮。 这可以通过Segue(如果你使用的是Storyboard),或通过 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated(message to UINavigationController)。

来自UINavigationController文档的

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

如果任一视图控制器未指定自定义栏按钮项,则使用默认后退按钮,并将其标题设置为上一个视图控制器的title属性的值 - 即视图控制器在堆栈上降低。 (如果导航堆栈上只有一个视图控制器,则不显示后退按钮。)

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