swift 2 搜索栏将不会在 unwind segue 后隐藏
swift 2 search bar will be not hidden after unwind segue
在我的 swift 2 应用程序中,我有一个带有搜索栏的 table 视图控制器。
我在 viewDidLoad 中设置了搜索栏。在 viewWillAppear 中,我设置了 tableView 的偏移量,因为我想在开始时隐藏搜索栏。这很有效。
但是如果我切换到另一个视图控制器并返回到带有退出展开转场的 TableViewController,搜索栏将直接可见。
如果我从另一个具有正常模式转场(不是展开)的视图控制器返回到我的 TableViewController,搜索栏将被隐藏,因为 tableview.setContentOffset 将处于活动状态。
知道我做错了什么吗?
class TableViewController: UITableViewController, ADBannerViewDelegate, UISearchBarDelegate, UISearchResultsUpdating {
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
var items = [CoreData_ITEMS]()
func updateSearchResultsForSearchController(searchController: UISearchController) {}
func DatenAbrufen() {
let fetchRequest = NSFetchRequest(entityName: "ITEMS")
do {
try self.items = self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [CoreData_ITEMS]
} catch { }
self.tableView.reloadData()
}
/*************** VIEW DID LOAD ***************/
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
tableView.tableHeaderView = searchController.searchBar
}
override func viewWillAppear(animated: Bool) {
DatenAbrufen()
tableView.contentOffset = CGPointMake(0,44)
}
/*************** ANZAHL DER ZELLEN ERMITTELN ***************/
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
/*************** ZELLEN MIT INHALT FÜLLEN ***************/
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! ModifyCells
var ITEM:CoreData_ITEMS
ITEM = items[indexPath.row]
cell.Name.text = ITEM.name
return cell
}
/*************** EXIT FUNKTIONEN ***************/
@IBAction func exit_to_TViewController(segue: UIStoryboardSegue) {}
}
我遇到了类似的问题。问题是 tableView.contentOffset
不会被设置,除非 tableview 显示在屏幕上。我不知道为什么它有这种行为。所以对我来说修复它的是将 tableView.contentOffset
调用移动到 vieDidAppear
但是滚动有点可见。这对我来说不是问题。如果您不想这样,您可以尝试将呼叫移至 viewDidLayoutSubviews
.
在我的 swift 2 应用程序中,我有一个带有搜索栏的 table 视图控制器。 我在 viewDidLoad 中设置了搜索栏。在 viewWillAppear 中,我设置了 tableView 的偏移量,因为我想在开始时隐藏搜索栏。这很有效。
但是如果我切换到另一个视图控制器并返回到带有退出展开转场的 TableViewController,搜索栏将直接可见。
如果我从另一个具有正常模式转场(不是展开)的视图控制器返回到我的 TableViewController,搜索栏将被隐藏,因为 tableview.setContentOffset 将处于活动状态。
知道我做错了什么吗?
class TableViewController: UITableViewController, ADBannerViewDelegate, UISearchBarDelegate, UISearchResultsUpdating {
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
var items = [CoreData_ITEMS]()
func updateSearchResultsForSearchController(searchController: UISearchController) {}
func DatenAbrufen() {
let fetchRequest = NSFetchRequest(entityName: "ITEMS")
do {
try self.items = self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [CoreData_ITEMS]
} catch { }
self.tableView.reloadData()
}
/*************** VIEW DID LOAD ***************/
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
tableView.tableHeaderView = searchController.searchBar
}
override func viewWillAppear(animated: Bool) {
DatenAbrufen()
tableView.contentOffset = CGPointMake(0,44)
}
/*************** ANZAHL DER ZELLEN ERMITTELN ***************/
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
/*************** ZELLEN MIT INHALT FÜLLEN ***************/
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! ModifyCells
var ITEM:CoreData_ITEMS
ITEM = items[indexPath.row]
cell.Name.text = ITEM.name
return cell
}
/*************** EXIT FUNKTIONEN ***************/
@IBAction func exit_to_TViewController(segue: UIStoryboardSegue) {}
}
我遇到了类似的问题。问题是 tableView.contentOffset
不会被设置,除非 tableview 显示在屏幕上。我不知道为什么它有这种行为。所以对我来说修复它的是将 tableView.contentOffset
调用移动到 vieDidAppear
但是滚动有点可见。这对我来说不是问题。如果您不想这样,您可以尝试将呼叫移至 viewDidLayoutSubviews
.