簡體   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