![](/img/trans.png)
[英]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.