[英]Can i Push UINavigationController From another UIViewController
[英]Can I inherit from a UINavigationController in my UIViewController?
我试图在我的导航控制器中创建一个自定义导航栏,该导航栏在初始导航控制器之后一直在每个视图中保留。 我在自定义UINavigationController类中设置了导航栏,并试图继承UIViewController自定义类(导航控制器之后的第一个View Controller)中导航控制器的属性。
这是我使用的语法,其中HomePageViewController是要继承导航栏的UIViewController,而numberInput是HomePageViewController中的UITextField:
SearchNavigationController.swift
class SearchNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// Set up custom navigation bar
}
HomePageViewController.swift
class HomePageViewController: SearchNavigationController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var numberInput: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
numberInput.delegate = self
}
但是,当我的应用程序调用numberInput.delegate = self时,出现错误:致命错误:在展开Optional值时意外发现nil。
但是,当我用UIViewController替换SearchNavigationController时,它可以工作。
UINavigationController
不管理视图-它管理其他UIViewControllers
因此它不会初始化任何随机的@IBOutlets。 它只关心初始化导航栏并连接到其子视图控制器。
我认为您误解了如何在子视图控制器中“继承”(不是正确的词)导航栏。 子视图控制器必须是UIViewController
的子类。 然后@IBOutlets正常运行。 只要通过创建适当的“显示”脚本由UINavigationController
进行管理 ,它们就会自动使用该UINavigationController
的导航栏进行修饰 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.