Ios 当UISearchController处于活动状态时显示UIAlertController

Ios 当UISearchController处于活动状态时显示UIAlertController,ios,swift,uialertcontroller,uisearchcontroller,Ios,Swift,Uialertcontroller,Uisearchcontroller,我有一个UITableView,它在导航栏中有一个UISearchController。当用户在搜索栏中键入时,表视图内容将更新。选择一行后,另一个表视图控制器将被推送到导航堆栈。在新的表视图控制器上,有一个显示操作表的条形按钮项。问题是,当我在使用搜索控制器后选择一行,然后尝试在新的表视图控制器上打开操作表时,我得到 Attempt to present <UIAlertController: 0x103971800> on <KYFB_Black_Book.Members

我有一个UITableView,它在导航栏中有一个UISearchController。当用户在搜索栏中键入时,表视图内容将更新。选择一行后,另一个表视图控制器将被推送到导航堆栈。在新的表视图控制器上,有一个显示操作表的条形按钮项。问题是,当我在使用搜索控制器后选择一行,然后尝试在新的表视图控制器上打开操作表时,我得到

Attempt to present <UIAlertController: 0x103971800>  on <KYFB_Black_Book.MembersTableViewController: 0x103854c00> which is already presenting (null)
根据搜索文本更新结果:

@available(iOS 8.0, *)
    func updateSearchResults(for searchController: UISearchController) {
        filteredCountyNames.removeAll(keepingCapacity: false)
        let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
        let array = (countyNames as NSArray).filtered(using: searchPredicate)
        filteredCountyNames = array as! [String]
        tableView.reloadData()
    }
在第二个控制器中,显示警报控制器:

searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.searchBar.tintColor = .white
        searchController.dimsBackgroundDuringPresentation = false
        searchController.hidesNavigationBarDuringPresentation = false
        let searchField = searchController.searchBar.value(forKey: "searchField") as? UITextField
        searchField?.textColor = .white

        if #available(iOS 11.0, *) {
            navigationItem.searchController = searchController
            navigationItem.hidesSearchBarWhenScrolling = false
        } else {
            searchController.searchBar.frame = CGRect(x: 0, y: 0, width: 200.0, height: 44.0)
            searchField?.textColor = .black
            searchController.searchBar.tintColor = .black
            navigationItem.titleView = searchController.searchBar
        }
@objc func actionTapped() {
        let emailAlert = UIAlertController(title: "Contact All Committee Members", message: "", preferredStyle: .actionSheet)
        let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action) in
            print("Cancel")
            })
        let emailAction = UIAlertAction(title: "Email", style: .default, handler: { (action) in
            self.emailAll()
            })
        let messageAction = UIAlertAction(title: "Text Message", style: .default, handler: { (action) in
            self.textAll()
            })

        emailAlert.view.tintColor = UIColor(red: 28.0 / 255.0, green: 75.0 / 255.0, blue: 136.0 / 255.0, alpha: 1)
        emailAlert.addAction(emailAction)
        emailAlert.addAction(messageAction)
        emailAlert.addAction(cancelAction)
        present(emailAlert, animated: true, completion: nil)
    }

你能试试看它是否有效吗?只需替换代码中显示操作表的最后一行

if let presentedVC = presentedViewController {
    presentedVC.present(emailAlert, animated: true, completion: nil)
} else {
    present(emailAlert, animated: true, completion: nil)
}

你能试试看它是否有效吗?只需替换代码中显示操作表的最后一行

if let presentedVC = presentedViewController {
    presentedVC.present(emailAlert, animated: true, completion: nil)
} else {
    present(emailAlert, animated: true, completion: nil)
}

在使用UISearchController并尝试呈现UIAlertController时,我也出现了相同的错误。试试这个:

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // To avoid the problem
        search.dismiss(animated: false, completion: nil)
    }

在使用UISearchController并尝试呈现UIAlertController时,我也出现了相同的错误。试试这个:

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // To avoid the problem
        search.dismiss(animated: false, completion: nil)
    }

我认为这个问题与
definesPresentationContext
property@ReinierMelian我尝试将其设置为true,但得到了相同的结果。@raginggoat似乎是MembersTableViewController在呈现操作表之前呈现了一些内容。您确定没有任何内容介绍吗?我认为该问题与
definesPresentationContext
property@ReinierMelian我尝试将其设置为true,但得到了相同的结果。@raginggoat似乎是MembersTableViewController在呈现操作表之前呈现了一些内容。你确定没有显示任何内容吗?我不想在打开UIAlearView之前关闭搜索栏,即使搜索栏可见也只需显示它!我不想在打开UIAlearView之前关闭搜索栏,即使搜索栏可见也要显示它!