2015-05-05 16 views
5

Şu an UISearchController ile projelerimden birinde yer alan searchDisplayController'ı değiştirmeye çalışıyorum ve bu sorunla karşılaşıyorum.UISearchController, iptal düğmesine bastıktan sonra VC'yi kapatır

Aramada hiçbir sonuç yoksa (UITableView boş) tüm ViewController reddedilir. Arama sonuçları boş olmadığında bu olmaz. Bir UITableViewController kullanmıyorum açık yapmak için değildi. Bunun yerine içinde bir UITableView ile düzenli bir VC var.

İşte benim kod bazı geçerli:

var resultSearchController = UISearchController() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 
     controller.delegate = self 
     controller.searchBar.delegate = self 
     self.studentTable.tableHeaderView = controller.searchBar 
     return controller 
    })() 
    .... 
} 

Şimdi, iptal düğmesi her zaman VC görevden denkleme bu işlevi eklerseniz.

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    resultSearchController.active = false 
} 

Neden tam olarak searchController.active = false VC görevden ayarı geliyor? Aynı UITableView'u VC olarak kullandığından mı? Ben eski searchDisplayController sadece kullanılan bir UITableView görüntüleyecektir inanıyorum. Bu durumda dismissVC'yi geçersiz kılacak bir yol var mı?

+0

ne olur :-) yardımcı olur Umut

resultSearchController.searchBar.text = "" resultSearchController.searchBar.resignFirstResponder() 

ile: Bunu çözün Way değiştirilmesi gereğidir 'false' ve iptal düğmesine bastın mı? – shim

+0

İçermediği zaman, soru durumları olarak arama sonucu olmadığında VC'yi yalnızca reddeder. Eğer varsa, iptal düğmesine basıldığında her zaman yapar. – boidkan

+0

Arama sonucu olmadığında reddeder veya arama sonuçları olmadığında reddeder ve iptal ettiniz mi? – shim

cevap

2

bu da bana oluyor.

resultSearchController.active = false 

Ben bu active` için `ayarı çizgisini içermez zaman

+0

Bu çözüm searchController'ı etkin hâle getirir, yani SearchBar'ı tablo açmaya-aşağı-yukarı-yenileme etkinleştirilmiş olarak eklediyseniz, yenileme göstergesi görünmeyecektir; Alternatif bir çözüm olarak, mevcut arama Çubuğu'nu süper görüntüden kaldırın ve oluşturup yeni bir tablo görünümüne ekleyin. – Delorean

İlgili konular