标签: uisearchcontroller

UISearchController不会解除iOS 8 Swift的搜索栏和重叠

我遇到了UISearchController的问题,如果我在搜索栏中有文本并关闭它所在的VC,则searchBar不会消失,只是保持在屏幕上与其他VC中的所有内容重叠.如果你点击取消按钮它会崩溃.

在SO上尝试了一些解决方案,但没有一个有效.:/

self.resultSearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.hidesNavigationBarDuringPresentation = false
        controller.searchBar.sizeToFit()

        controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal
        controller.searchBar.barTintColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)
        controller.searchBar.tintColor = UIColor.blackColor()

        controller.definesPresentationContext = true
        controller.edgesForExtendedLayout = UIRectEdge.None
        self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0)

        self.tableView.tableHeaderView = controller.searchBar

        return controller
    })()
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助!

更新:所以我找到了一个不太好的解决方案,即在viewWillDisappear中设置.active = false.但问题是,在完全消失之前,searchBar工件将在下一个/上一个VC上显示一秒钟.

ios swift uisearchcontroller

11
推荐指数
1
解决办法
4188
查看次数

使用beginUpdates/endUpdates时,UISearchBar从tableHeaderView中消失

我有一个表视图控制器,UISearchController其设置 UISearchBartableView.tableHeaderView.当更新搜索结果,我用的是beginUpdatesendUpdates和相关方法来更新表视图中的数据.

这使搜索栏消失; 将tableHeaderView其设置UIView为与搜索栏大小相同的空,通用.如果我只是使用reloadData而不是整个beginUpdates/ endUpdates程序,一切都很好.

表视图控制器嵌入在常规视图控制器中; 没有涉及导航控制器.这是重现问题所需的表视图控制器的整个实现:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater = self;
    self.searchController.dimsBackgroundDuringPresentation = NO;

    self.tableView.tableHeaderView = self.searchController.searchBar;
}

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
}
Run Code Online (Sandbox Code Playgroud)

为什么这会导致搜索栏被替换为空白视图,如何避免?

cocoa-touch uitableview uisearchbar ios uisearchcontroller

11
推荐指数
1
解决办法
776
查看次数

UISearchController禁用取消UIBarButtonItem

问题

我试图使用UISearchController在地图视图上搜索目的地.我希望UISearchBar出现在导航栏中,但我似乎无法在没有显示右侧的取消按钮的情况下这样做:

在此输入图像描述

这个取消按钮有时会消失,而我正在玩耍,但我现在无法让它显示我的搜索表显示我想要它:

在此输入图像描述

我肯定必须有一些我做得有点小错误的东西,但我无法弄清楚它是什么......

我的守则

self.resultsViewController = [UITableViewController new];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.resultsViewController];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = false;
self.searchController.delegate = self;
self.searchBar = self.searchController.searchBar;
self.searchBar.placeholder = self.stage.title;
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;

self.definesPresentationContext = true;
self.navigationItem.titleView = self.searchBar;

self.resultsTableView = self.resultsViewController.tableView;
self.resultsTableView.dataSource = self;
self.resultsTableView.delegate = self;
Run Code Online (Sandbox Code Playgroud)

objective-c uikit uisearchbar ios uisearchcontroller

10
推荐指数
3
解决办法
1万
查看次数

UISearchController使控制器变黑

我在iOS 8中使用UISearchController,并在viewDidLoad中使用嵌入在选项卡控制器中的视图控制器中的以下intializait

 _searchController = [[UISearchController alloc] initWithSearchResultsController:nil];

    _searchBar = _searchController.searchBar;
    [_searchController.searchBar sizeToFit];
    _searchController.searchBar.delegate = self;
   _searchController.searchResultsUpdater = self;
    _searchController.dimsBackgroundDuringPresentation = NO;
    _searchController.hidesNavigationBarDuringPresentation  = NO;
    self.definesPresentationContext = NO;
    _shopsTable.tableHeaderView = _searchController.searchBar;
Run Code Online (Sandbox Code Playgroud)

我已经实施了

- (void) updateSearchResultsForSearchController:(UISearchController *)searchController(void)filterContentForSearchText:(NSString *)searchText

并且搜索工作,tableview正确更新等.

但!

如果我在搜索控制器处于活动状态时切换选项卡(只需点击搜索栏或某些文本)到另一个选项卡,然后返回到搜索选项卡,我会得到一个只有搜索栏的空白屏幕,就像这样

在此输入图像描述

在这种情况下,我搜索开头的东西lar,它确实返回结果并正确地显示它们.但如果我切换标签,然后返回搜索标签,我会得到一个这样的空白屏幕.如果我这样做,控制器返回其原始状态的唯一方法_searchController.active = NO.但是,如果用户想要保持该搜索活动,我不能只是停用它.

我确信我遗漏了一些东西,但由于在UISeachController中没什么可做的,我无法弄清楚是什么导致了这个...

uisearchbar ios ios8 uisearchcontroller

10
推荐指数
1
解决办法
2431
查看次数

如何在UISearchController演示/解雇动画旁边制作动画?

我有一个带有搜索栏的表格视图tableHeaderView,由a管理UISearchController.我使用标准的UISearchController演示动画.

我想为与searchBar动画具有相同持续时间的另一个视图设置动画.我尝试了各种持续时间值但是它们在任何时候都不完全匹配.

所以我认为使用-[UIViewControllerTransitionCoordinator animateAlongsideTransition:completion:]API 会很棒.

不幸的是我找不到<UIViewControllerTransitionCoordinator>对象的引用.具体来说searchController.presentingViewController.transitionCoordinator就是nil.

cocoa-touch uikit ios uisearchcontroller

10
推荐指数
1
解决办法
1483
查看次数

当焦点在Search Bar上时,如何将另一个文本字段添加到UISearchController?

当用户将注意力集中在导航栏上搜索栏下方的搜索栏时,我正在尝试为UISearchController的"位置"输入添加另一个文本字段.

我拥有的例子以及我希望它去的地方:

在此输入图像描述

我尝试过这样的东西,但是不起作用:

var searchController: UISearchController!

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
    var myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200.00, height: 40.00))
    myTextField.backgroundColor = UIColor.purpleColor()
    myTextField.text = "Location"
    myTextField.borderStyle = UITextBorderStyle.None
    searchController.view.addSubview(myTextField)
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!谢谢.

uitextfield uisearchdisplaycontroller swift uisearchcontroller

10
推荐指数
1
解决办法
1166
查看次数

错误"应用程序试图在操作上激活UISearchController时尝试提供模态视图控制器"

在我的代码中,这是我设置的方式UISearchController:

searchResultController = storyboard!.instantiateViewControllerWithIdentifier(DBSearchResultControllerIdentifier) as! DBSearchResultController

searchController = UISearchController(searchResultsController: searchResultController)

searchController.searchResultsUpdater = self
searchController.delegate = self

searchResultController.tableView.tableHeaderView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)

我采取的一些行动是:

@IBAction func cityButtonTapped(sender: UIButton) {
    searchController.active = true
}
Run Code Online (Sandbox Code Playgroud)

但后来我有一个错误:

应用程序试图在自身上呈现模态视图控制器.提出控制器是UISearchController: 0x7f9a0c04a6a0

xcode ios swift uisearchcontroller

10
推荐指数
1
解决办法
7039
查看次数

UISearchController的UISearchBar的光标显示首次使用,而不是后续

第一次应用程序的这部分加载搜索控制器的搜索栏的光标显示,根据需要.

用光标搜索

(问题)当搜索被解除然后(稍后)重新编码时,没有光标:

搜索无光标

这是可重复的,只是加载/解除,即没有任何显然可以/应该改变事物的色调,导致光标是背景的颜色(通常是缺少光标的答案,从我看到的SO Q&As)这个话题.)也就是说,没有别的东西不能工作,只是光标消失了.

一些(可能)复杂因素:

  • 这个加载/卸载UISearchController的ViewController(并将UISearchBar嵌入到UINavigationController的标题中)是我的自定义容器VC中的内容VC.层次结构是:(1)UIWindow(2)UINavigationController(3)ContainerVC(4)ContainedVC [parent是ContainerVC,这个VC正在进行UISearchController的加载/卸载].
  • 有各种委托回调(UISearchController,UISearchBar)尝试自定义行为(例如隐藏取消按钮,停止之间的关闭),希望这些行为不会对事情产生影响,但仅限于FYI.
  • "卸载"(停止/拆除)涉及各种努力使其消失,从标题视图中删除搜索栏,设置搜索控制器active = false等.(因为它发生在此之后,它感觉可能是相关的,所以我尝试了各种排列以防万一有什么帮助.没有这样的运气.)

我已经做了各种尝试让孩子VC创建它自己的SearchController,和/或在根VC上使用它,依此类推.各种排列似乎都有效,但同样存在缺陷.(因此,我觉得我在寻找问题/解决方案来源的错误位置.)

我不能排除光标颜色已经改变,我不完全理解它是如何设置/继承的,特别是考虑到我拥有的VC堆栈,以及如何在调试器中测试它.我认为这就像我设置全局色调一样简单.

注意:这个程序是用故事板直接设置,并没有使用外观代理.这说它有:

    // Default tint for application...
    UIApplication.sharedApplication().delegate?.window??.tintColor = mainBrandColor
    UIToolbar.appearance().tintColor = mainBrandColor
Run Code Online (Sandbox Code Playgroud)

...我尝试过UISearchBar的各种排列,UINavigationBar色调通过外观代理w /相同的行为(首先工作,后来没那么多.)在不同时间,(即工作时和不工作时)看这个显示相同的颜色:

(lldb) po searchController.searchBar.tintColor
Run Code Online (Sandbox Code Playgroud)

注意:单独使用UISearchController(当调用VC不是容器的子代,而是推送VC时)并不能证明这个问题.光标保持正确的颜色.

环境:这是Swift on XCode 7.1上的iOS9.x应用程序.

这是一些代码,其中homeVC是父/容器VC:

    if nil == homeVC.searchController {
        homeVC.searchController = UISearchController(searchResultsController: nil)
        homeVC.searchController!.searchResultsUpdater = self
        homeVC.searchController!.delegate = self
        homeVC.searchController!.searchBar.delegate = self
        homeVC.searchController!.searchBar.showsCancelButton = false
        homeVC.searchController!.searchBar.returnKeyType = .Done
        homeVC.searchController!.searchBar.placeholder = "Add Item"
        homeVC.searchController!.searchBar.searchBarStyle = UISearchBarStyle.Minimal
        homeVC.searchController!.dimsBackgroundDuringPresentation = false
        homeVC.searchController!.hidesNavigationBarDuringPresentation = …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller uisearchbar ios swift uisearchcontroller

10
推荐指数
1
解决办法
2672
查看次数

将过滤器按钮添加到UISearchController

我想一个"过滤器"或"排序"按钮旁边的添加searchBarUISearchController.我已经尝试添加UIButtonsearchbar进入a UIView并将其设置为my UITableView tableView.tableHeaderView这不起作用,因为tableView.tableHeaderViewget的设置回到了UISearchBar解除控制器的时候.以下是我希望它的外观示例:在此输入图像描述

uitableview uisearchbar ios swift uisearchcontroller

10
推荐指数
3
解决办法
6076
查看次数

UISearchController没有在iOS8上显示

我有一个UISearchController,其searchBar设置为我的tableView的tableHeaderView:

tableView.tableHeaderView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)

它在运行iOS9的设备上运行良好: 在此输入图像描述

但是当我在运行iOS8的设备上运行它时,没有搜索栏. 在此输入图像描述

根据我的阅读,UISearchController适用于iOS8及更高版本.所以我不明白为什么它的searchBar没有显示在我的iOS8设备上.

ios uisearchcontroller

10
推荐指数
1
解决办法
2077
查看次数