Swift 3 — отключить и включить сегментированное управление

У меня есть два табличных представления, и я переключаюсь между ними, выбирая сегментированный элемент управления. Я также получил контроллер поиска с панелью поиска. Когда я выбираю панель поиска, сегментированный элемент управления должен быть отключен, чтобы вы не могли выбрать второе табличное представление. Когда я нажимаю кнопку отмены в строке поиска, сегментированный элемент управления должен снова активироваться. Но это не работает, сегментированный элемент управления остается отключенным. Когда я выбираю ячейку табличного представления и возвращаюсь к этому контроллеру представления, сегментированный элемент управления снова включается. Но я хочу, чтобы он был включен, когда я нажимаю кнопку отмены. Мой код выглядит следующим образом:

   func deactivateSegment() {
    segmentedController.setEnabled(false, forSegmentAt: 1)
}

func activateSegment() {
    segmentedController.setEnabled(true, forSegmentAt: 1)
}


extension SegmentedTableController: UISearchResultsUpdating, UISearchBarDelegate {

func updateSearchResults(for searchController: UISearchController) {
    deactivateSegment()
    if searchController.searchBar.text != "" {
        filterContentForSearchText(searchText: searchController.searchBar.text!)
    } else {
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "update_view"), object: rumList, userInfo: nil)
    }
}

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    KCFABManager.defaultInstance().hide()
    deactivateSegment()
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    KCFABManager.defaultInstance().show()
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "update_view"), object: self.rumList, userInfo: nil)

   activateSegment()
}
}

Я также пробовал это с segmentedController.isEnabled = false (&true) и segmentedController.isUserInteractionEnabled = false (&true), но это тоже не работает.

Что я делаю не так?


person MightyAlienDwarf    schedule 01.03.2017    source источник
comment
удалить это deactivateSegment() в updateSearchResults   -  person Anbu.Karthik    schedule 01.03.2017
comment
Да, получилось, спасибо! Я удалил деактивацию из updateSearchResults, и теперь она работает так, как я хочу.   -  person MightyAlienDwarf    schedule 01.03.2017
comment
добро пожаловать .......   -  person Anbu.Karthik    schedule 01.03.2017


Ответы (1)


удалите deactivateSegment() в методе делегата updateSearchResults

func updateSearchResults(for searchController: UISearchController) {
   // deactivateSegment()
  if searchController.searchBar.text != "" {

еще нравится

  func updateSearchResults(for searchController: UISearchController) {

    if searchController.searchBar.text != "" {
        filterContentForSearchText(searchText: searchController.searchBar.text!)
        activateSegment()
    } else {
        deactivateSegment()
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "update_view"), object: rumList, userInfo: nil)
    }
}
person Anbu.Karthik    schedule 01.03.2017