2017-02-13 51 views
0

我有兩個不同的ViewControllers,細節&搜索。去細節的賽段工作正常,但去搜索一直不斷崩潰的應用程序。我已經花了兩個小時閱讀類似的問題,但沒有人似乎有同樣的問題:Xcode Segue「無法投射類型的值」

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let detailVC = segue.destination as! DetailViewController 

    if segue.identifier == "newDocSegue" { 
     // Create a new document and pass it to the detail view. 
     detailVC.doc = Document() 
     detailVC.isAddAction = true 
    } 

    if segue.identifier == "editDocSegue" { 
     // Load the existing document into the detail view, for editing. 
     let indexPath = tableView.indexPath(for: sender as! UITableViewCell)! 
     detailVC.doc = Document[indexPath.row] 
     detailVC.isAddAction = false 
    } 
    else if segue.identifier == "searchSegue" { 
     shouldPerformSegue(withIdentifier: "searchSegue", sender: Any?.self) 
    } 

} 
+0

segues從TableViewController到ViewControllers –

+2

shouldPerformSegue(withIdentifier:「searchSegue」,sender:Any?.self),爲什麼這行代碼在那裏? – raki

+0

您在第二個if語句中缺少'else' – Fonix

回答

0

你的問題是

讓detailVC = segue.destination作爲! DetailViewController

line。這將嘗試將任何VC(包括您的搜索VC)作爲DetailViewController進行投射。試試這個:

let detailVC : UIViewController 

if segue.identifier == "newDocSegue" { 
    // Create a new document and pass it to the detail view. 
    detailVC = segue.destination as! DetailViewController 
    detailVC.doc = Document() 
    detailVC.isAddAction = true 
} 

if segue.identifier == "editDocSegue" { 
    // Load the existing document into the detail view, for editing. 
    detailVC = segue.destination as! ??? // not sure what type you want here 
    let indexPath = tableView.indexPath(for: sender as! UITableViewCell)! 
    detailVC.doc = Document[indexPath.row] 
    detailVC.isAddAction = false 
} 
else if segue.identifier == "searchSegue" { 
    detailVC = segue.destination as! SearchViewController 
    shouldPerformSegue(withIdentifier: "searchSegue", sender: Any?.self) 
} 
+0

謝謝。這回答了它。我在前兩個賽段中移動了let語句。 –

0

你的問題是:

let detailVC = segue.destination as! DetailViewController 

如果你的目的地的類型是SearchViewController投會導致錯誤

試試這個:

if let detailVC = segue.destination as? DetailViewController 

你應該知道約as?as!

+0

這是有道理的。謝謝。 –

相關問題