2017-03-01 63 views
0

我有两个表视图,我通过选择分段控件在它们之间切换。我也有一个搜索控制器与搜索栏。当我选择搜索栏时,应该禁用分段控件,以便您不能选择第二个表视图。当我点击搜索栏中的取消按钮时,应该再次激活分段控件。但这不起作用,分段控制保持禁用状态。 当我选择一个表格视图单元格并返回到此视图控制器时,再次启用分段控件。但是我想在按下取消按钮时启用它。 我的代码如下: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) 尝试过,但也不能正常工作。

我在做什么错?

+0

删除这个'''中'updateSearchResults –

+0

是啊,这做到了,deactivateSegment()谢谢!我从updateSearchResults中删除了停用,现在它按我的意愿工作。 – MightyAlienDwarf

+0

欢迎....... –

回答

0

删除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) 
    } 
}