【发布时间】:2015-06-16 18:40:13
【问题描述】:
UITableViewController 和“UISearchController”出现错误。我做的不同。我将self.definesPresentationContext = true 写入viewDidLoad,但我得到了同样的错误。
警告:尝试呈现不在窗口层次结构中的视图!
请帮忙。
我的 viewDidLoad 代码
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = self.editButtonItem()
fetchedResultsController = NSFetchedResultsController(fetchRequest: allEmployeesFetchRequest(), managedObjectContext: managedObjectContext!, sectionNameKeyPath: "mynote", cacheName: "mynote") // both mynote
fetchedResultsController?.delegate = self
fetchedResultsController?.performFetch(nil)
self.searchController = ({
var controllerS = UISearchController(searchResultsController: nil)
controllerS.delegate = self
controllerS.searchBar.delegate = self
controllerS.searchResultsUpdater = self
controllerS.searchBar.sizeToFit()
controllerS.dimsBackgroundDuringPresentation = false
controllerS.hidesNavigationBarDuringPresentation = false
// self.definesPresentationContext = true
self.tableView.tableHeaderView = controllerS.searchBar
return controllerS
})()
}
我的 prepareForSegue 代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
if searchPredicate == nil {
let object = self.fetchedResultsController!.objectAtIndexPath(indexPath) as! NSManagedObject
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController //DetailViewController
controller.detailItem = object
} else {
let object = filteredObjects![indexPath.row] as Note
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
}
}
self.searchController.active = false
}
}
更新
如果我制作了self.definesPresentationContext = true,那么我需要触摸两个一次返回按钮,这些按钮将在UITableViewController 上从SecondViewController 返回
【问题讨论】:
-
if let indexPath == self.tableView.indexPathForSelectedRow() -
不,它得到了一个错误 Brocked block
-
如果你在 viewDidAppear 中做同样的事情,它会起作用吗?
-
它可以工作,但是我需要在返回按钮上触摸两个从 SecondViewController 中返回的 UITableViewController。为什么?
-
“触摸两次”是什么意思?
标签: ios xcode swift segue uisearchcontroller