簡體   English   中英

永遠不會調用為 Segue 做准備

[英]Prepare for Segue is never called

我有以下故事板:

圖片(聲望不夠)

這個怎么運作?

  1. 用戶可以看到所有的單元格。
  2. 用戶無法查找一個特定的單元格。
  3. 當一個單元格被點擊時,表格視圖消失並且容器視圖不再隱藏。
  4. 容器視圖顯示了被按下的單元格中對象的所有信息。

主控制器具有以下方法:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    searchBar.showsCancelButton = false
    searchBar.text = filteredData[indexPath.row]
    searchBar.resignFirstResponder()
    tableView.isHidden = true
    especificationView.isHidden = false
    print("A")
    performSegue(withIdentifier: "unwindToEspecification", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("B")
    if let indexPath = tableView.indexPathForSelectedRow{
        aircraftSelected = aircrafts[indexPath.row]
    }
}

爭論的觀點有:

func changeLabel(text: String) {
        registrationLabel.text = text
    }

@IBAction func unwindToEspecificationViewController (sender: UIStoryboardSegue) -> Void{
            print("B")
            if let controller = sender.source as? AircraftSelectionViewController, let data = controller.aircraftSelected{
                self.aircraft = data
                changeLabel(text: (aircraft?.registration)!)
            }
        }

主故事板鏈接到另一個視圖,帶有以下 segue 和他的標識符:

圖片

當我執行此代碼時,終端僅顯示“A”。

我怎樣才能讓它工作?

非常感謝。

在你的故事板中,Aircraft Selection 是一個父視圖控制器,而 Aircraft Especification 是它的子視圖控制器。 它們之間不可能有“segue”; 他們都在屏幕上同時顯示他們的觀點,所以從這里“去”無處可去。

如果這個想法是顯示一個表格視圖,其單元格可以被搜索限制,那不是 segue 的工作,而是 UISearchController 架構的工作。

如果想法是建立從 Aircraft Selection 視圖控制器到 Aircraft Especification 視圖控制器的通信線路,后者是 Aircraft Selection 的孩子,所以從 Aircraft Selection 的角度來看,它是self.childViewControllers[0] (或,在 Swift 4.2 中, self.children[0] )。 你需要用as!把它扔掉as! 以便將其作為飛機電子規范進行討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM