天道酬勤,学无止境

uisearchcontroller

UISearchController 在 iPad 上显示全屏而不是弹出窗口(UISearchController showing fullscreen instead of a popup on iPad)

问题 我想构建一个类似于地图应用程序的搜索控件; 搜索会在 iPhone 上打开一个结果 tableview(工作正常),并且应该在 iPad 上的 popover 中打开一个 tableview。 这曾经在UISearchDisplayController是自动的,但不再起作用,它在 iPad 上显示全屏 tableview。 self.resultsController = [[EFResultTableViewController alloc] init]; [self.resultsController.tableView setDelegate:(id<UITableViewDelegate>)self]; self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.resultsController]; [self.searchController setSearchResultsUpdater:(id<UISearchResultsUpdating>)self]; self.searchController.dimsBackgroundDuringPresentation = NO; self.searchController

2021-09-22 06:21:26    分类:技术分享    ios   objective-c   uitableview   ipad   uisearchcontroller

如何将 UISearchController 的 searchBar 设置为不是 tableHeaderView 或 navigationItem.titleview 的视图?(How do I set the UISearchController's searchBar to a view that isn't the tableHeaderView or navigationItem.titleview?)

问题 我试图在表格滚动时保持搜索栏的可见性。 目前,我将它作为表格视图中的标题,它可以正常工作,但当然,当您沿着表格向下时,搜索栏会滚动到屏幕外。 我想我可以简单地修改这个代码示例: 如何在 iOS 8 中使用 UISearchController,其中 UISearchBar 位于我的导航栏中并具有范围按钮? searchController = UISearchController(searchResultsController: nil) searchController.searchResultsUpdater = self searchController.delegate = self searchController.searchBar.delegate = self searchController.dimsBackgroundDuringPresentation = false searchController.hidesNavigationBarDuringPresentation = false tableview.tableHeaderView = searchContoller.searchBar // How to put it elsewhere? //Alternative that also works navigationItem

2021-09-21 12:02:07    分类:技术分享    ios   swift   ios8   uisearchbar   uisearchcontroller

搜索后访问索引路径行(Accessing index path row after search)

问题 我用数据填充了一个表格,所有的工作都按预期进行——包括将每一行的细节转移到另一个场景。 我在那里扔了一个搜索栏(以编程方式 - 使用新的 searchController),它成功地重新加载了包含任何找到的结果的原始表。 但是,在搜索后触摸选定的行时,传递的是原始表行的顺序,该行恰好与现在触摸的行处于同一位置! (即如果我选择当前搜索的第二行,下一个场景将继续原表第二行的细节!) 那么如何在搜索后为 prepareForSegue 函数提供正确的行呢? 这是单元格创建: override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell if (self.resultSearchController.active) { cell.textLabel?.text = filteredTableData[indexPath.row] return cell } else { cell

2021-09-21 11:15:38    分类:技术分享    ios   xcode   swift   uisearchcontroller

UISearchController - 键盘未显示(UISearchController - Keyboard not showing)

问题 我正在使用 UISearchController 并且搜索功能除了两件事外都有效。 也许它们是相关的: a) 键盘不显示。 所以我不能按“搜索”按钮 b) 在我的主 TableView 中,我访问了样式为“副标题”的原型单元格。 搜索进行时,显示的单元格为“基本”样式。 在这两种情况下(TableViewController 和 SearchViewController),我使用相同的单元格标识符。 有任何想法吗? 这里的一些代码: class OverviewTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() let resultsController = SearchResultsController() resultsController.birds = birds searchController = UISearchController(searchResultsController: resultsController) //searchController.dimsBackgroundDuringPresentation = true let searchBar = searchController.searchBar

2021-09-21 05:10:27    分类:技术分享    ios   uitableview   swift   uisearchcontroller

将 UISearchController 与 UINavigationController 内的 UITabBarController 一起使用时,搜索栏会被切断(Search bar gets cut off when using UISearchController with a UITabBarController inside a UINavigationController)

问题 我有一个在UINavigationController中有一个UITabBarController的应用程序。 ( UITabBarController不是故事板的“初始视图控制器”。) 在最初的UIViewController ,我有一个UISearchController ,它允许从远程源搜索内容。 这工作正常,直到我添加了UITabBarController 。 现在,搜索栏在默认状态下显示正常,但是一旦您开始在其中输入内容,它就会被推到视图的顶部边缘。 我意识到这可能与automaticallyAdjustsScrollViewInsets 、 extendedLayoutIncludesOpaqueBars和/或edgesForExtendedLayout ,但在我所有的调整中,我一直无法找到神奇的组合来让UISearchController不把自己推到视图的顶部. 关于如何使其工作的任何想法? 请参阅此示例项目中的这些屏幕截图: 初始视图: 搜索文本框成为第一响应者: 输入一个词并按回车键后: 回答1 我也遇到了这个问题,这里有一个解决方案:在UITabBarController上设置definesPresentationContext = true而不是表视图控制器似乎可以解决这个问题。 显然,您必须一直向上直到容器层次结构中的导航控制器。 如果你问我

2021-09-20 14:57:11    分类:技术分享    ios   uitabbarcontroller   uisearchcontroller

UISearchController 更改“取消”按钮标题(UISearchController change 'Cancel' button title)

问题 我们如何更改搜索控制器中取消按钮的标题? 回答1 您可以使用此更改搜索栏中的“取消”按钮 - for (UIView *view in searchBar.subviews) { for (id subview in view.subviews) { if ( [subview isKindOfClass:[UIButton class]] ) { [subview setEnabled:YES]; UIButton *cancelButton = (UIButton*)subview; [cancelButton setTitle:@"hi" forState:UIControlStateNormal]; NSLog(@"enableCancelButton"); return; } } } 回答2 上面提供的解决方案可能会随着新的 iOS 版本而改变。 这是一个更好的方法: [searchBar setValue:@"customString" forKey:@"_cancelButtonText"]; 回答3 Swift 相当于 Burhanuddin Sunelwala 的回答对我有用! self.searchBar.setValue("custom string", forKey: "cancelButtonText") 感谢 Burhanuddin

2021-09-18 16:59:12    分类:技术分享    ios   uitableview   uisearchcontroller

自定义 UISearchController 动画(Custom UISearchController Animation)

问题 底线问题: 如何覆盖关闭属于 UISearchController 的 searchBar 的默认动画? 标准搜索控制器行为: 好的,所以我正在尝试为附加到 UISearchController 的 UISearchBar 变为活动状态创建自定义动画。 似乎标准动画期望 searchBar 以占据屏幕的宽度开始。 当动画开始时,它会缩小搜索栏并淡入其右侧的取消按钮。 我想达到的目标: 我想让我的 searchBar 以一个小状态开始,大约是屏幕宽度的一半,以允许将两个按钮也放置在它旁边的导航栏中。 现在的动画: 当搜索栏变为活动状态时,我希望动画展开搜索栏并使取消按钮淡入。 关闭动画: 当搜索栏被关闭时,我希望发生完全相反的动画:取消按钮淡出,搜索栏缩小到它的原始大小。 问题: 我找到了一种通过使用 UISearchControllerDelegate 方法presentSearchController 来实现所需呈现动画的方法: func presentSearchController(searchController: UISearchController) { // Animate Buttons UIView.animateWithDuration(0.1, animations: { // First Hide Buttons self

2021-09-18 10:29:33    分类:技术分享    ios   objective-c   swift   uisearchbar   uisearchcontroller

Swift searchBar 在旋转期间 searchController.active 后与 tableView 顶部分离(Swift searchBar separates from top of tableView after searchController.active during rotation)

问题 //为什么包含searchResults数组的tableView,在旋转到横向和纵向后,将tableView的顶部向下推,从而将searchBar与tableView的顶部分开。 每次旋转到横向和返回后都会重复发生这种情况。 这仅在开始搜索后发生。 如果 searchController 未处于活动状态,则不会在旋转时发生。 类 InitialViewController:UIViewController、UITableViewDataSource、UITableViewDelegate、UISearchResultsUpdating { @IBOutlet weak var tableView: UITableView! let searchController = UISearchController(searchResultsController: nil) let b = searchController.searchBar b.sizeToFit() // crucial, trust me on this one b.scopeButtonTitles = ["Drugs", "Tumor", "Target"] tableView.tableHeaderView = searchController.searchBar

2021-09-16 01:32:20    分类:技术分享    uisearchcontroller

如果使用 UISearchController 重新加载数据,导航栏会消失(Navigation bar disappears if reload data with UISearchController)

问题 我的应用程序可以工作,因此我在 UICollectionViewController 内的可重用视图中有一个 UISearchController。 在搜索栏中点击时,我单击任何结果,它会触发通知以重新加载 collectionView 以反映更改。 lazy var searchController: UISearchController = { let tableViewController = UITableViewController(style: .Plain) tableViewController.tableView.dataSource = self tableViewController.tableView.delegate = self tableViewController.tableView.registerClass(StoreListCell.self, forCellReuseIdentifier: "MiniStoreCell") let searchController = UISearchController(searchResultsController: tableViewController) searchController.searchResultsUpdater = self searchController.searchBar

2021-09-16 00:44:14    分类:技术分享    ios   iphone   swift   uisearchcontroller

你如何使用 Storyboards 引用 UISearchController(How do you reference to a UISearchController using Storyboards)

问题 我添加了一个搜索栏和搜索显示控制器(假设这是我在情节提要中添加的内容,因为他们没有要拖出的“SearchController”对象)。 我的问题是我现在如何在该 SearchController 上设置属性? self.searchController 不起作用,Xcode 说当我将 UISearchBar 添加到视图时它会自动添加。 我究竟做错了什么? 我需要访问它的原因是我可以设置结果搜索表,如下所示: UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain]; searchResultsController.tableView.dataSource = self; searchResultsController.tableView.delegate = self; self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController]; self.searchController.searchResultsUpdater = self

2021-09-15 06:11:37    分类:技术分享    ios   objective-c   uisearchbar   uisearchcontroller