从 segue 显示视图时导航栏消失

Posted

技术标签:

【中文标题】从 segue 显示视图时导航栏消失【英文标题】:Navbar dissapears when view is displayed from segue 【发布时间】:2016-04-23 14:54:41 【问题描述】:

我有一个嵌入了 NavigationController 的 TableViewController。还有一个 ViewController 可以向 tableview 添加新位置。 这显示了故事板的相关部分

当用户点击一个选择位置时,会有一个通过 NavigationController 到 LocationChoiceTableViewController 的 segue 动作......显示的缩短版本是......

如您所见,我的导航栏显示了两个按钮来添加或编辑列表。如果用户单击添加,segue 操作会将他们带到 AddLocationViewController... 用户添加新位置的详细信息,然后单击添加,它有一个 segue 操作返回到 LocationChoiceTableViewController,将输入的值作为单个连接字符串 (newLocationtoPass) 传递回

LocationChoiceTableViewController 类中的 viewDidLoad 有....

override func viewDidLoad() 
    super.viewDidLoad()

    self.resultsController.tableView.dataSource = self
    self.resultsController.tableView.delegate = self


    if let savedLocations = defaults.objectForKey("locations") as? NSData 
        locations = NSKeyedUnarchiver.unarchiveObjectWithData(savedLocations) as![String]
    

    if newLocationtoPass != nil 
        // we have a new location passed via segue from AddNewLocationViewController

        //add new location to locations array and sort
        insertSorted(&locations, newItem: newLocationtoPass)
        // save location array to NSUserDefaults
        saveLocationArray()
    

    self.navigationController?.setNavigationBarHidden(false, animated: true)

    self.navigationItem.leftBarButtonItem = self.editButtonItem()

    self.searchController = UISearchController(searchResultsController: self.resultsController)
    self.tableView.tableHeaderView = self.searchController.searchBar
    self.searchController.searchResultsUpdater = self
    self.searchController.dimsBackgroundDuringPresentation = false
    definesPresentationContext = true


如果 newLocationtoPass 不为空,则将值插入数组(在正确的排序位置)并将数组保存到 NSUserDefaults...所有这些工作如下面的屏幕截图所示...

我的问题是我丢失了带有编辑/添加按钮的导航栏。我添加了 self.navigationController?.setNavigationBarHidden(false, animated: true) 行,但从 AddLocationViewController 返回时导航栏不显示。

任何解决此问题的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

尝试在 viewWillAppear 中编写 self.navigationController?.setNavigationBarHidden(false, animated: true) ..这可能对您有所帮助..

【讨论】:

抱歉...视图显示方式没有变化【参考方案2】:

已修复...我更改了 Storyboard,以便从 AddLocationViewController 上的 Cancel 和 Add 按钮的 segue 操作转到 NavigationController 而不是 LocationChoiceTreeViewController。

【讨论】:

以上是关于从 segue 显示视图时导航栏消失的主要内容,如果未能解决你的问题,请参考以下文章

从 iphone 上的 push segue 导航返回时,顶部导航栏变得可见

Segue没有显示导航栏

导航到特定视图时导航栏消失

从自定义导航栏展开 segue 后,如何切换回默认导航栏外观?

执行 push segue 后,当给搜索栏焦点时,导航栏隐藏

使用 performSegue 显示 navigationController