Ios 展开后,swift 2搜索栏不会隐藏
在我的swift 2应用程序中,我有一个带有搜索栏的表视图控制器。 我在viewDidLoad中设置了搜索栏。在ViewWillDisplay中,我设置了tableView的偏移量,因为我想在开始时隐藏搜索栏。这是芬德的作品 但是,如果我切换到另一个视图控制器,并返回带有“退出”“展开”序列的TableViewController,搜索栏将直接可见 如果我从另一个具有正常模式序列(未展开)的视图控制器返回TableViewController,搜索栏将隐藏,因为tableview.setContentOffset将处于活动状态 知道我做错了什么吗Ios 展开后,swift 2搜索栏不会隐藏,ios,uitableview,swift2,uisearchbar,uisearchcontroller,Ios,Uitableview,Swift2,Uisearchbar,Uisearchcontroller,在我的swift 2应用程序中,我有一个带有搜索栏的表视图控制器。 我在viewDidLoad中设置了搜索栏。在ViewWillDisplay中,我设置了tableView的偏移量,因为我想在开始时隐藏搜索栏。这是芬德的作品 但是,如果我切换到另一个视图控制器,并返回带有“退出”“展开”序列的TableViewController,搜索栏将直接可见 如果我从另一个具有正常模式序列(未展开)的视图控制器返回TableViewController,搜索栏将隐藏,因为tableview.setCont
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,否则不会设置
tableView.contentOffset
。我不知道它为什么有这种行为。因此,对我来说,解决这个问题的方法是将tableView.contentOffset
调用移动到vieDidAppear
,但是滚动有点明显。这对我来说不是问题。如果您不想这样做,可以尝试将调用移动到viewdilayoutsubviews
我将此调用放入viewdilease
=>中,结果与post 1相同。我把这个调用放在viewdilayoutsubviews
=>搜索栏现在一直隐藏着。但是现在我无法向下滚动表格视图以显示搜索栏…还可以尝试使用tableView.setContentOffset(CGPoint(x:0,y:44),动画:false)
而不是tableView.contentOffset=
好的,如果我在第一次启动时将其放入viewdilayoutsubviews
,我会看到表格将如何向下滚动,搜索栏将如何隐藏。但如果向上滚动(显示搜索栏),表格将自动再次向下滚动-每次。在didAspect
中,我遇到了与post 1相同的问题,它应该可以在didAspect
上工作,确保在设置内容偏移量后,不要调用reloadData
,这可能与此有关。我还发现了此帖子:。如果将“展开”序列直接连接到按钮,也可能会导致问题。