2016-09-20 54 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