4.2 以编程方式实现UINavigationController
以编程方式实现UINavigationController,让我们一起探索如何用纯代码构建导航控制器!🚀 这将使你能够完全掌控应用的导航流程,摆脱Storyboard的束缚。
创建UINavigationController的基础
首先,你需要创建一个UINavigationController的实例。这通常在你的AppDelegate或者其他初始化代码中完成。你可以将任何UIViewController设置为UINavigationController的根视图控制器。
let rootViewController = MyViewController()
let navigationController = UINavigationController(rootViewController: rootViewController)
window.rootViewController = navigationController2
3
这段代码创建了一个名为MyViewController的视图控制器,并将其设置为UINavigationController的根视图控制器。然后,将UINavigationController设置为UIWindow的根视图控制器。
Push和Pop视图控制器
UINavigationController的核心功能是管理视图控制器的堆栈。你可以使用pushViewController(_:animated:)方法将新的视图控制器推入堆栈,使用popViewController(animated:)方法将顶部的视图控制器弹出堆栈。
// Push
let newViewController = NewViewController()
navigationController.pushViewController(newViewController, animated: true)
// Pop
navigationController.popViewController(animated: true)2
3
4
5
6
pushViewController方法会将newViewController添加到导航堆栈的顶部,并显示它。popViewController方法会移除堆栈顶部的视图控制器,并返回到前一个视图控制器。动画效果使过渡更加流畅。
自定义导航栏
你可以自定义导航栏的外观,例如设置背景颜色、标题颜色和按钮。通过navigationBar属性可以访问UINavigationController的导航栏。
navigationController.navigationBar.barTintColor = UIColor.red
navigationController.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]2
这段代码将导航栏的背景颜色设置为红色,标题颜色设置为白色。你还可以添加自定义的UIBarButtonItem到导航栏的左右两侧。
使用UIBarButtonItem
UIBarButtonItem代表导航栏上的按钮。你可以创建自定义的UIBarButtonItem,并将其添加到导航栏的leftBarButtonItems或rightBarButtonItems数组中。
let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
navigationItem.rightBarButtonItem = addButton
@objc func addTapped() {
// 处理添加按钮的点击事件
print("Add button tapped!")
}2
3
4
5
6
7
这段代码创建了一个“添加”按钮,并将其添加到导航栏的右侧。当用户点击该按钮时,addTapped方法将被调用。
导航栏的显示与隐藏
有时,你可能需要隐藏导航栏。你可以使用setNavigationBarHidden(_:animated:)方法来控制导航栏的显示与隐藏。
navigationController.setNavigationBarHidden(true, animated: true)这段代码将隐藏导航栏,并带有动画效果。你可以根据需要在不同的视图控制器中控制导航栏的显示与隐藏。
通过以上步骤,你就可以完全掌握如何以编程方式实现UINavigationController。🎉 记住,实践是最好的老师!多尝试,多探索,你将成为iOS开发的专家!💪