2016-04-26 66 views
0

我是初級iOS開發人員。 目前我正在開發一個應用程序,我想創建設置,所以我有一個UITableViewController,它包含一個帶類別的UITableView,當你點擊一個單元格時,你應該顯示另一個UITableView,它包含點擊類別的所有值。 下面是代碼:用PrepareForSegue方法從UITableView傳遞到另一個

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 

if segue.identifier == "getValueFromCategory" { 
    let viewController = (segue.destinationViewController as? UnitTableViewController)! 

    let indexPath = self.tableView.indexPathForSelectedRow!.row 
    print(indexPath) 
    segue. 
    //print(viewController) 
    viewController!.toPass = self.categories[indexPath].titleCategory 
} 
} 

如果我取消了讓的viewController線,我得到這個錯誤:無法投類型的值「的UITableViewController」(0x10b635c10)爲「fitness.UnitTableViewController」(0x108196d48)。

如果有人知道我做錯了什麼,它可以幫助!

謝謝!

+0

請同時發佈當前類名稱和目標類名稱及其屬性 – Shubhank

+0

爲什麼不使用didSelectedRowAtIndex去另一個ViewController? – Hasya

回答

0

的問題,正如你所說,在這些線路:

if segue.identifier == "getValueFromCategory" { 
    let viewController = (segue.destinationViewController as? UnitTableViewController)! 

錯誤消息告訴你,這賽格瑞的destinationViewController不,事實上,一個UnitTableViewController。你可能會認爲這是事實,但事實並非如此。你需要在故事板中檢查這個segue,看看它的目的地究竟是什麼。

該錯誤消息將其描述爲一個UIViewController讓我懷疑你忘了故事板,進入這個視圖控制器的身份檢查的任何視圖控制器類型的事實:

enter image description here

+0

嗨, 謝謝你的答案,非常清楚。 我不知道爲什麼,但在故事板上,我無法訪問這些信息 只寫「沒有選擇」你有什麼想法爲什麼? 我一直在尋找你的答案。 –

0

方法1

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 

    let objNextViewController : NextViewController = segue.destinationViewController as! NextViewController 

    // objNextViewController.array = currentClassArray 

} 

或者

方法2

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{ 

let objNextViewController = self.storyboard?.instantiateViewControllerWithIdentifier(「ID_NextViewController」) as? NextViewController 

// objNextViewController.array = currentClassArray 

self.navigationController?.pushViewController(objNextViewController!, animated: true) 

} 
相關問題