2016-04-12 5 views
0

в моем приложении swift 2 У меня есть контроллер табличного представления с панелью поиска. i настраиваю панель поиска в моем представленииDidLoad. и в viewWillAppear я устанавливаю смещение моего tableView, потому что я хотел бы скрыть панель поиска при запуске. это работает finde.swift 2 search bar не будет скрыт после разговора segue

, но если я переключусь на другой контроллер представления и вернусь к TableViewController с выходом undeze segue, панель поиска будет непосредственно видна.

Если я вернусь к моему TableViewController с другого контроллера вида с нормальным модальным segue (не разворачивается), панель поиска будет скрыта, потому что 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) {} 


} 

ответ

0

У меня была аналогичная проблема. Дело в том, что tableView.contentOffset не устанавливается, если на экране не отображается табличное представление. Я не знаю, почему у него такое поведение. Так что это исправлено для меня, переместил вызов tableView.contentOffset на номер vieDidAppear, но затем прокрутка немного виден. Для меня это не проблема. Если вы не хотите, чтобы вы попытались перевести вызов на viewDidLayoutSubviews.

+0

Я поместил этот вызов в 'viewDidAppear' => тот же результат, что и сообщение 1. Я положил этот вызов в панель просмотра' ​​viewDidLayoutSubviews' =>, теперь он скрыт все время. но теперь я не могу прокрутить вниз по представлению таблицы, чтобы показать строку поиска ... – Stack108

+0

Также попробуйте использовать 'tableView.setContentOffset (CGPoint (x: 0, y: 44), анимированный: false)' вместо 'tableView.contentOffset =' – Jelly

+0

в порядке, если я поместил это в 'viewDidLayoutSubviews' при первом запуске, я вижу, как таблица будет прокручиваться вниз, а панель поиска будет скрыта. но если прокрутка вверх (чтобы показать строку поиска), таблица автоматически прокручивается вниз - каждый раз. в 'didappear' у меня была такая же проблема, как и сообщение 1 – Stack108