Ios 展开后,swift 2搜索栏不会隐藏

Ios 展开后,swift 2搜索栏不会隐藏,ios,uitableview,swift2,uisearchbar,uisearchcontroller,Ios,Uitableview,Swift2,Uisearchbar,Uisearchcontroller,在我的swift 2应用程序中,我有一个带有搜索栏的表视图控制器。 我在viewDidLoad中设置了搜索栏。在ViewWillDisplay中,我设置了tableView的偏移量,因为我想在开始时隐藏搜索栏。这是芬德的作品 但是,如果我切换到另一个视图控制器,并返回带有“退出”“展开”序列的TableViewController,搜索栏将直接可见 如果我从另一个具有正常模式序列(未展开)的视图控制器返回TableViewController,搜索栏将隐藏,因为tableview.setCont

在我的swift 2应用程序中,我有一个带有搜索栏的表视图控制器。 我在viewDidLoad中设置了搜索栏。在ViewWillDisplay中,我设置了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,否则不会设置
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
,这可能与此有关。我还发现了此帖子:。如果将“展开”序列直接连接到按钮,也可能会导致问题。