2016-09-20 33 views
0

我有一個NavigationController嵌入在我的TableViewController。當我運行應用程序時,一切正常,但導航欄不顯示。導航欄不顯示嵌入TableViewController - 斯威夫特

這是我的代碼的外觀:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let box = boxes[indexPath.row] 
    print(box.name) 



    if let storyboard = self.storyboard { 
     let viewController = storyboard.instantiateViewController(withIdentifier: "BoxDescriptionTVC") as! BoxDescriptionTableViewController 
     self.present(viewController, animated: false, completion: nil) 
     viewController.boxDetailsLabel.text = box.boxDescription 
     if let boxImageURL = box.boxImageURL { 
      viewController.boxImageView.loadImageUsingCacheWithUrlString(urlString: boxImageURL) 
     } 
    } 
} 

如何創建我NavigationController的實例來展示它,而不是TableViewController的?

+0

你應該創建您的導航控制器的實例,並展示它,而不是BoxDescriptionTVC。 –

+0

如何創建我的NavigationController實例來呈現它而不是TableViewController? – cosmos

回答

1

首先,您可以在storyboard中爲NavigationController設置storyboardID。然後,你可以寫如下代碼。 (我假設你viewcontrollers位於「主」故事板,您可以在身份檢查器中設置storyboardID)

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let boxDescriptionNavVC = storyboard.instantiateViewControllerWithIdentifier(BoxDescriptionNavID) as! UINavigationController 
let destinationTableViewVC = boxDescriptionNavVC.topViewController as! YourTableViewVC 
destinationTableViewVC.textVariable = box.boxDescription 
presentViewController(boxDescriptionNavVC, animated: true, completion: nil) 
+0

從控制檯得到這個:致命錯誤:意外地發現零,而解包一個可選值。它被觸發在這一行:viewController.boxDetailsLabel.text = box.boxDescription – cosmos

+0

什麼是你的嵌入式導航控制器的Storyboard ID?你是否在instantiateViewControllerWithIdentifier函數中放入了完全相同的ID? – woogii

+0

我把這個:「BoxDescriptionNavID」 – cosmos