【发布时间】:2015-10-19 18:57:57
【问题描述】:
我正在尝试在我的导航控制器中创建一个自定义导航栏,该导航栏在初始导航控制器之后通过每个视图持续存在。我在自定义 UINavigationController 类中设置导航栏,并尝试在我的 UIViewController 自定义类中继承导航控制器的属性(导航控制器之后的第一个视图控制器)
这是我正在使用的语法,其中 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 时,我收到错误:致命错误:在展开可选值时意外发现 nil。
但是当我用 UIViewController 替换 SearchNavigationController 时,它可以工作。
【问题讨论】:
-
UINavigationController是UIViewControllers 的“集合”。如果您的UINavigationController已经自定义,则所有推入或弹出自定义NavCon 的UIViewControllers 都将具有相同的导航栏。 -
想做什么
-
@Lamar,正如我在第一行中所说,我试图在我的导航控制器中创建一个自定义导航栏,该导航栏在初始导航控制器之后的每个视图中持续存在。因此,将标题后面的标准导航控制器替换为我的自定义导航控制器。
标签: ios xcode swift uiviewcontroller uinavigationcontroller