我有一个具有嵌入式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不为null,则将值插入数组(在正确的排序位置)并将数组保存到NSUserDefaults ...所有这些都如下面的屏幕截图所示...
我的问题是我使用编辑/添加按钮丢失了导航栏。我添加了行self.navigationController?.setNavigationBarHidden(false, animated: true)
但是从AddLocationViewController返回时导航栏没有显示。
任何帮助解决这个问题都将受到赞赏。