Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UISearchController在点击取消按钮时解除VC_Ios_Uitableview_Swift_Uisearchbar_Uisearchcontroller - Fatal编程技术网

Ios UISearchController在点击取消按钮时解除VC

Ios UISearchController在点击取消按钮时解除VC,ios,uitableview,swift,uisearchbar,uisearchcontroller,Ios,Uitableview,Swift,Uisearchbar,Uisearchcontroller,因此,我目前正在尝试用UISearchController替换我的一个项目中的去润滑的searchDisplayController,我遇到了这个问题 如果搜索中没有结果(UITableView为空),则整个ViewController将被解除。当搜索结果不为空时,不会发生这种情况。我不想说明我没有使用UITableViewController。相反,我有一个普通的VC,里面有一个UITableView 以下是我的一些代码: var resultSearchController = UISear

因此,我目前正在尝试用UISearchController替换我的一个项目中的去润滑的searchDisplayController,我遇到了这个问题

如果搜索中没有结果(UITableView为空),则整个ViewController将被解除。当搜索结果不为空时,不会发生这种情况。我不想说明我没有使用UITableViewController。相反,我有一个普通的VC,里面有一个UITableView

以下是我的一些代码:

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
    })()
    ....
}
现在,如果我将这个函数添加到等式中,取消按钮总是取消VC

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

那么,为什么设置
searchController.active=false
会消除VC呢?是因为它与VC使用相同的UITableView吗?我相信旧的searchDisplayController只会在正在使用的视图上显示一个UITableView。如果是这样的话,有没有办法覆盖dismissVC?

这也发生在我身上。我解决问题的方法是替换:

   resultSearchController.active = false


我希望这对您有所帮助:-)

2018只想分享我1-2小时调试的成果

我在使用
UISearchController
UITabBarController
时遇到了多个问题,即:

  • 这一个,这个关于操作的问题。点击取消按钮会关闭显示searchController的屏幕

  • 选项卡(或屏幕)变为黑色

  • 在iOS 10、11和12中的
    UINavigationController
    导航栏的标题视图中使用
    UISearchController
    ,如下问题

  • 对于#3的解决方案,既然我们已经在这里了:

    最后,我一直看到的唯一解决方案是添加以下代码:

    self.definesPresentationContext = true
    
    问题是我把它放在了一个错误的函数中

    记住,这个解决方案解决了我遇到的第一和第二个问题。不多不少


    在何处添加该选项?
    视图中显示
    。就这样

    如果不包括行设置
    active
    false
    ,并点击取消按钮,会发生什么情况?如果不包括行设置,则仅在没有搜索结果时,如问题所述,将关闭VC。如果它包含在内,则在单击“取消”按钮时,它始终会执行此操作。当没有搜索结果时,它将被取消;当没有搜索结果时,它将被取消;当您单击“取消”按钮时,它将被取消;当您单击“取消”按钮时,它将被取消。有什么想法吗?找到了。可能具有
    definesPresentationContext=true
    的行是关键。此解决方案使searchController保持活动状态,这意味着,如果您在启用下拉刷新的情况下将搜索栏连接到tableview,则刷新指示器将不可见;作为替代解决方法,从superview中删除现有的搜索栏,并创建新的搜索栏并将其附加到tableview。
    self.definesPresentationContext = true