繁体   English   中英

我可以从UIViewController中的UINavigationController继承吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM