搜索处于活动状态并推送到下一个视图控制器时出现导航栏问题

     2023-03-13     94

关键词:

【中文标题】搜索处于活动状态并推送到下一个视图控制器时出现导航栏问题【英文标题】:Navigation bar issue when search is active and push to next view controller 【发布时间】:2018-07-18 12:54:45 【问题描述】:

我遇到了导航栏的问题。我在 navigationItem 的搜索控制器中添加了searchController

查看以下链接中的图片: navigation bar issue

步骤:

1) 我在表格视图中有数据,当我单击单元格时,它会打开带有自定义导航视图的详细信息屏幕。这工作正常。 (默认导航栏隐藏)

2) 现在,我点击了搜索栏,然后点击了表格视图单元格。它向我显示默认导航栏到详细信息屏幕。我不想显示默认导航栏。

我为实现搜索控制器而编写的代码如下:

searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search here..."

searchController.searchBar.tintColor = .white
searchController.searchBar.barTintColor = .white

if let textfield = searchController.searchBar.value(forKey: "searchField") as? UITextField 

    textfield.textColor = UIColor.blue

    if let backgroundview = textfield.subviews.first 

        // Background color
        backgroundview.backgroundColor = UIColor.white

        // Rounded corner
        backgroundview.layer.cornerRadius = 10;
        backgroundview.clipsToBounds = true;
    


self.navigationItem.searchController = self.searchController

definesPresentationContext = true

下面是在 didSelect 方法中隐藏导航栏的代码:

self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true

【问题讨论】:

你是如何隐藏导航栏的?tableView(_ tableView: didSelectRowAt indexPath: ) 的代码是什么? @zero3nna,请看我的更新问题,我确实添加了隐藏导航栏的代码。 【参考方案1】:

我遇到了同样的问题。尽管我在 viewWillAppear() 中隐藏了导航栏,但当搜索控制器在前一个视图中处于活动状态时,似乎有些东西使导航栏可见。

我通过在 viewWillLayoutSubviews() 中再次隐藏导航栏解​​决了这个问题:

override func viewWillLayoutSubviews() 
    super.viewWillLayoutSubviews()
    navigationController?.setNavigationBarHidden(true, animated: false)

【讨论】:

我刚刚添加了这个(甚至在viewWillAppear 中没有,只是在viewWillLayoutSubviews 中),它完美地工作!谢谢戴夫:) 我试过 viewDidLoad、viewWillAppear、viewDidAppear。我尝试在搜索视图上添加自定义导航栏。没有任何效果。 3天后,我找到了这个答案。非常感谢! 这应该是公认的答案,因为此解决方案意味着如果这是必需的功能,searchController 可以在前一个视图中保持活动状态。【参考方案2】:

您可以通过使搜索控制器处于非活动状态来解决此问题,然后在延迟一段时间后导航到您的详细信息视图控制器。

在您的didSelect 方法中尝试以下代码,这将帮助您在搜索控制器处于活动状态时隐藏导航栏。

searchController.isActive = false

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) 
    self.navigationController?.navigationBar.isHidden = true
    self.navigationController?.isNavigationBarHidden = true
    self.navigationController?.pushViewController(<YourViewController>, animated: true)

您必须延迟导航,否则它会在控制台中向您发出有关导航控制器演示过程的警告。

因此,此代码首先使您的搜索控制器处于非活动状态,然后导航到您的下一个视图控制器。

【讨论】:

这项工作对我有用..但搜索状态不保持..是否也可以保持搜索状态? 是的,您必须存储以前的搜索文本,当返回时,只需将其分配给搜索文本字段并在有数据时重新加载表格。【参考方案3】:

Objective-C

-(void)viewWillDisappear:(BOOL)animated
    if (@available(iOS 13.0, *)) 
        [self.navigationController.view setNeedsLayout]; 
        [self.navigationController.view layoutIfNeeded];
    

斯威夫特

func viewWillDisappear(_ animated: Bool) 
    if (@available(iOS 13.0, *)) 
         self.navigationController?.view.setNeedsLayout()     
         self.navigationController?.view.layoutIfNeeded()
    

【讨论】:

当搜索栏处于活动状态时,快速表视图被锁定

...:2019-12-2921:58:59【问题描述】:我正在使用一个包含搜索控制器的大型导航栏。如果我不搜索,我可以毫无问题地滚动浏览我的tableview,但是如果我正在搜索它就像它被锁定一样接缝。这是我的代码:funcupdateSearchResults(forsearchCon... 查看详情

关闭并滑动以关闭搜索控制器处于活动状态的问题

】关闭并滑动以关闭搜索控制器处于活动状态的问题【英文标题】:Dismissandswipetodismississueswithsearchcontrolleractive【发布时间】:2020-02-2518:32:46【问题描述】:我在模态视图控制器中使用UISearchController搜索栏作为导航栏的标题视图... 查看详情

StoryBoard 导航到根视图控制器

】StoryBoard导航到根视图控制器【英文标题】:StoryBoardNavigatetoRootViewController【发布时间】:2013-11-0716:43:38【问题描述】:这是我第一次使用故事板,我设置了大约5个带有UINavigationController的视图控制器,其中的按钮可以推送到下... 查看详情

UISearchDisplayController 处于活动状态时搜索栏上方的额外空间

...】:我有一个带有UITableViewController的弹出框作为内容视图控制器。表格视图有一个UISearchBar作为它的标题视图。现在,在iOS6上 查看详情

切换回搜索栏处于活动状态时,选项卡栏视图变为空白

...能在实际的、隔离的iOS设备上复制此错误。当你展示搜索控制器时,iOS也会展示一个键盘,它覆盖标签栏。要切换标签,您必须关闭键盘,这也会关闭搜索控制器 查看详情

使用搜索栏时无法使表格视图处于非活动状态。苹果手机

】使用搜索栏时无法使表格视图处于非活动状态。苹果手机【英文标题】:Can\'tmaketableviewinactivewhensearchbarisinuse.iPhone【发布时间】:2010-07-2021:53:57【问题描述】:我有一个表格视图,上面有一个搜索栏,当按下搜索栏时,我希望... 查看详情

在 UISearchController 处于活动状态时选择 tableview 中的单元格,不显示下一个视图?

...一个表格视图,您可以在其中选择一个单元格,然后视图控制器将执行下一个视图的segue,当您不 查看详情

iOS 如何知道哪个视图控制器应该处于活动状态?

】iOS如何知道哪个视图控制器应该处于活动状态?【英文标题】:HowdoesiOSknowwhichviewcontrollershouldbeactive?【发布时间】:2011-03-2314:40:10【问题描述】:如果我想用另一个屏幕替换应用程序的一个屏幕,但我不使用导航栏/标签栏控... 查看详情

如何在情节提要中自定义由标识符实例化并推送到导航堆栈的视图控制器的 UINavigationItem?

...节提要中自定义由标识符实例化并推送到导航堆栈的视图控制器的UINavigationItem?【英文标题】:Howtocustominstoryboardmyviewcontroller\'sUINavigationItemthatisinstantiatedbyidentifierandpushedontonavigationstack?【发布时间】:2015-07-0516:52:59【问题描述... 查看详情

worklight ant task app-deployer - WL 控制台安全处于活动状态时出现未经授权的错误

】worklightanttaskapp-deployer-WL控制台安全处于活动状态时出现未经授权的错误【英文标题】:worklightanttaskapp-deployer-UnauthorizederrorwhenWLconsolesecurityisactive【发布时间】:2013-02-1907:45:26【问题描述】:我正在尝试使用提供的ant任务app-depl... 查看详情

如何确定当前视图控制器是不是处于活动状态,如果处于活动状态则执行代码

】如何确定当前视图控制器是不是处于活动状态,如果处于活动状态则执行代码【英文标题】:Howtodeterminewhethercurrentviewcontrollerisactive,andexecutecodeifactive如何确定当前视图控制器是否处于活动状态,如果处于活动状态则执行代码... 查看详情

滑动 ViewController 时出现导航栏错误

...发布时间】:2016-08-0109:40:31【问题描述】:我有一个视图控制器,它是第二个视图控制器,需要一个导航栏。第一个是不需要导航栏的控制器,第三个视图控制器需要导航栏。根据堆栈,第三个视图控制器将不是堆栈顶部。我已... 查看详情

当 UISearchController 处于活动状态时呈现 UIAlertController

...UITableView,它在导航栏中有一个UISearchController。当用户在搜索栏中键入时,表格视图内容会更新。选择行时,另一个表视图控 查看详情

在 UIScrollView 仍处于活动状态的情况下检测视图中的连续触摸位置

...布时间】:2016-06-0106:57:24【问题描述】:我有兴趣在视图控制器的视图中获取触摸位置(例如,或模仿touchesMoved),同时仍保持启用UIScrollView子视图。由于所有touchesDidSome 查看详情

在键盘处于活动状态时呈现模态视图控制器

】在键盘处于活动状态时呈现模态视图控制器【英文标题】:presentingamodalviewcontrollerwhilethekeyboardisactive【发布时间】:2014-08-0503:21:46【问题描述】:所以我基本上有一个表单,由几个文本字段组成。用户像往常一样输入字段。但... 查看详情

为啥视图中的按钮与父视图控制器处于非活动状态?

】为啥视图中的按钮与父视图控制器处于非活动状态?【英文标题】:whybuttoninviewinactivewithparentview\'scontroller?为什么视图中的按钮与父视图控制器处于非活动状态?【发布时间】:2017-12-0508:45:04【问题描述】:我正在使用swipView... 查看详情

UISearchController 搜索栏在活动时与第一个单元格重叠

...ontroller在我的表格视图中搜索数据。我没有使用表格视图控制器。我想在搜索栏处于活动状态时隐藏导航栏,因此我将self.searchController 查看详情

在搜索栏处于活动状态时删除表格视图中的单元格 - CoreData 错误

】在搜索栏处于活动状态时删除表格视图中的单元格-CoreData错误【英文标题】:Deletingacellinatableviewwhilesearchbarisactive-CoreDataError【发布时间】:2015-06-2409:03:04【问题描述】:我对IOS编程很陌生,这将是我的第一个应用程序。我有... 查看详情