如何向 UINavigationBar 添加后退按钮?
Posted
技术标签:
【中文标题】如何向 UINavigationBar 添加后退按钮?【英文标题】:How do I add a back button to my UINavigationBar? 【发布时间】:2016-01-19 23:54:45 【问题描述】:用户通过 push segue 从前一个视图控制器到达此视图控制器,因此我希望在 UINavigationBar
中有一个后退按钮以允许他们返回。
如果我右键单击故事板中的 viewController 并选择 Embed in
> Navigation Controller
,通常会默认显示此后退按钮,但这样做会导致崩溃,我更喜欢以编程方式执行操作,所以我决定这样做在viewDidLoad
像这样:
// Nav bar
UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
// Back Button
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:self action:@selector(Back)];
self.navigationItem.leftBarButtonItem = backButton;
[self.view addSubview:navbar];
这成功地在顶部添加了一个导航栏,但它没有按预期添加后退按钮。我已经尝试了here、here 和here 给出的解决方案,但都没有解决问题。
【问题讨论】:
这正是您不应该在代码中执行此操作的原因,它会通过创建视图来污染您的控制器,并且只会打开通向具有怪异行为的笨重 UI 的大门。将故事板用于尽可能多的 UI 内容,这就是它们的用途,尽可能限制程序化 UI 内容。 【参考方案1】:您已经构建了一个UINavigationBar
和一个UIBarButtonItem
,但从未连接这两者。
UINavigationController
为您管理一个UINavigationBar
并将其设置为topItem
为导航堆栈中最顶层视图控制器的navigationItem
。如果您需要构建自己的导航栏,那么您需要自己管理它的项目堆栈。看看UINavigationBar
的- pushNavigationItem:animated:
方法。
但是,鉴于您似乎想要 UINavigationController
的外观和功能,我不清楚您为什么要自己添加 UINavigationBar
视图而不是使用该容器视图控制器。
【讨论】:
这很好。然后我将如何显示容器?除非我将它嵌入到导航控制器中,否则它不会像现在这样显示,这会导致崩溃。以上是关于如何向 UINavigationBar 添加后退按钮?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 使用 Interface Builder 创建一个带有后退按钮的简单 UINavigationBar