展开segue后,swift 2搜索栏将不会被隐藏

时间:2016-04-12 06:12:18

标签: ios uitableview swift2 uisearchbar uisearchcontroller

在我的swift 2应用程序中,我有一个带有搜索栏的表格视图控制器。 我在viewDidLoad中设置了搜索栏。并在viewWillAppear中我设置了我的tableView的偏移量,因为我想在开始时隐藏搜索栏。这是有效的。

但如果我切换到另一个视图控制器并返回带有退出展开segue的TableViewController,搜索栏将直接可见。

如果我从另一个具有普通模态segue(不展开)的视图控制器返回我的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) {}


}

1 个答案:

答案 0 :(得分:0)

我有类似的问题。问题是除非在屏幕上显示tableview,否则tableView.contentOffset不会被设置。我不知道为什么会有这种行为。所以修正它的原因是将tableView.contentOffset调用移动到vieDidAppear,但滚动有点可见。这对我来说不是问题。如果您不想要,可以尝试将呼叫转移到viewDidLayoutSubviews