Tag: uisearchcontroller

在使用SearchController进行search时使用标签栏获取黑屏

我有一个embedded在导航控制器中的标签栏控制器的应用程序。 该应用程序有2个选项卡,第一个(search)具有使用UISearchController实现的search栏。 如果我在search时从这个选项卡切换到另一个选项卡(下载),在另一个选项卡上会发生两件事 – 第二个选项卡(下载)中的导航栏消失 当我回到第一个标签(search),它显示一个黑色的屏幕 我已经完成了所有这些使用故事板。 这是我的SearchViewController import UIKit import Alamofire import SwiftyJSON class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate{ //MARK: Variables var papers = [Paper]() var filteredPapers = [Paper]() let searchController = UISearchController(searchResultsController: nil) // MARK: Outlets @IBOutlet weak var activityIndicator: UIActivityIndicatorView! @IBOutlet var table: UITableView! @IBOutlet weak var loadingMessageLabel: UILabel! @IBOutlet weak […]

从UISearchController的已过滤search结果中删除

我有一个tableView来源于CoreData单元格内容,并用新的SearchControllerreplace了SearchDisplayController (已弃用)。 我使用相同的tableView控制器来呈现对象的完整列表以及过滤/search的对象。 我设法使search/过滤工作正常,并可以从过滤列表移动到这些项目的详细视图,然后编辑并保存更改成功回到过滤的tableView。 我的问题是滑动删除过滤列表中的单元格导致运行时错误。 以前与SearchDisplayController我可以做到这一点,因为我有权访问SearchDisplayController's结果tableView,所以下面的(伪)代码将正常工作: func controllerDidChangeContent(controller: NSFetchedResultsController) { // If the search is active do this searchDisplayController!.searchResultsTableView.endUpdates() // else it isn't active so do this tableView.endUpdates() } } 不幸的是,没有这样的tableView是暴露的UISearchController和Im在一个损失。 我已经尝试使tableView.beginUpdates()和tableView.endUpdates()条件不是searchtableView,但没有成功。 logging这是我的错误消息: Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-3318.65/UITableView.m:1582 *编辑* 我的tableView使用FetchedResultsController从CoreData自己填充。 这个tableViewController也是SearchController用来显示过滤结果的一个。 var searchController: UISearchController! 然后在ViewDidLoad中 searchController = UISearchController(searchResultsController: nil) searchController.dimsBackgroundDuringPresentation = false searchController.searchResultsUpdater = […]

带有SearchController的TableView – DEINIT不被调用

我已经添加了一个search栏和search显示控制器从界面生成器到我的应用程序。 我无法正确地取消(dealloc)。 它显示了以下行为(swift2,ios9): 用户不search任何东西,只要从tableView中select一个项目, 调用DEINIT 用户search的东西(或只是在search栏中点击),取消search,从tableView中select项目, 调用DEINIT 用户search的东西(或只是点击search栏),并从tableView中select一个项目, DEINIT不被称为 🙁 如果我在导航控制器中select“返回”而不是select一个项目,则会发生同样的情况。 code removed – refer to COMPLETE CODE at bottom of post. 任何帮助感激! 更新进一步的testing显示,从视图控制器中删除progressHud / loadingHud完全不影响DEINIT没有被调用。 它必须是与tableview或searchcontroller本身有关… 更新2我已经尝试在我的viewWillDissapear调用searchBarCancelButtonClicked()方法,它仍然不释放。 即使如果你点击“取消”,然后离开它不… 更新3更改willDisappear / didDisappear到以下对DEINIT没有影响 – 但不会给出越野车接口问题(感谢Polina)。 我正在努力将任何我能得到释放,但没有运气到目前为止。 override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(true) searchBarCancelButtonClicked(searchController.searchBar) } override func viewDidDisappear(animated: Bool) { print("View did disappear") searchController.searchBar.resignFirstResponder() searchController.searchBar.endEditing(true) searchController.active = […]

UISearchController不能在旋转时重新显示导航栏

我已经实现了UISearchController,它工作的很好,除了… 当我点击search栏时,导航栏就像预期的那样很好地消失了。 当我将手机旋转到横向视图时,我可以得到这个有意义的视图。 但是,当我将手机旋转回纵向视图(仍在searchtypes区域中select)时,我会看到下面的视图。 你可以看到导航栏不会再出现。 我觉得我正在实施一个基本的search控制器。 什么可能导致这个? self.venueSearchController = [[UISearchController alloc] initWithSearchResultsController:nil]; self.venueSearchController.searchResultsUpdater = self; self.venueSearchController.searchBar.delegate = self; self.venueSearchController.dimsBackgroundDuringPresentation = NO; self.venueSearchController.hidesNavigationBarDuringPresentation = YES; self.venueSearchController.searchBar.frame = CGRectMake(self.venueSearchController.searchBar.frame.origin.x, self.venueSearchController.searchBar.frame.origin.y, self.venueSearchController.searchBar.frame.size.width, 44.0); self.definesPresentationContext = YES; self.navigationController.navigationBar.translucent = YES; self.venueSearchController.searchBar.translucent = YES; self.tableView.tableHeaderView = self.venueSearchController.searchBar;

UISearchController – 警告尝试加载视图控制器的视图

我收到以下错误。 尝试加载视图控制器的视图时,它是释放是不允许的,并可能导致未定义的行为() 试了下面的解决scheme,但不适合我尝试加载视图控制器的视图,而它正在释放… UISearchController 演示项目可在链接中find。 点击主控制器中的添加button,添加几个时间戳。 在主视图控制器的行之间切换,您将看到上述错误。 代码如下所示,可以在短时间内下载。 import UIKit class DetailViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating,UISearchBarDelegate { @IBOutlet weak var basicTable: UITableView! var tblSearchController:UISearchController! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.tblSearchController = UISearchController(searchResultsController: nil) self.basicTable.tableHeaderView=self.tblSearchController.searchBar // self.tblSearchController.edgesForExtendedLayout = (UIRectEdge.Top ) // self.tblSearchController.extendedLayoutIncludesOpaqueBars = true self.tblSearchController.searchResultsUpdater = […]

在SearchBar点击显示UISearchController的SearchResultsController

我正在使用UISearchController而不是UISearchDisplayController,我想在SearchBar上显示SearchResultController马上点击。 现在它显示像这样(当我点击search栏):

在tableHeaderView中的UISearchController searchBar在屏幕上animation化

我有一个UISearchController与一个UITableViewController作为searchResultsController ,这个searchController的UISearchBar被设置在我的当前tableView显示在我的根ViewController的tableHeaderView 。 正如所料,几乎所有工作都很顺利。 但在UISearchBar的animation(当我点击searchBar和UINavigationBar隐藏和searchBar到顶部,如在UISearchDisplayController ),我有一个奇怪的行为。 它不是移动到UINavigationBar (y:0)的位置,而是跳出屏幕,并启动显示取消button的animation。 我尝试将我的实例化代码移到viewDidLoad而不是init ,事情是一样的。 我认为问题的核心是在searchResultsController的视图框架,但我不知道(我试图设置框架,没有成功)。 我所做的一切都是纯代码。 这里是代码的相关部分: self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController]; self.searchController.delegate = self; self.searchController.searchResultsUpdater = self; self.searchController.searchBar.delegate = self; [self.searchController.searchBar sizeToFit]; self.tableView.tableHeaderView = self.searchController.searchBar; self.searchController.definesPresentationContext = YES; 我有一个延迟加载searchResultsController : – (UITableViewController *)searchResultsController { if (_searchResultsController == nil) { _searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain]; _searchResultsController.tableView.delegate = self; _searchResultsController.tableView.dataSource […]

UISearchController:即使在search栏为空时也显示结果

据我所知, UISearchController的默认行为是: 点击search栏时,背景变暗,显示“取消”button。 SearchResultsController直到此时才显示。 SearchResultsController仅在search栏不为空时显示。 即使search栏是空的,但select了(即上面的情况1),我也想显示SearchResultsController 。 简而言之,我想显示search结果,而不是背景调暗。 有没有办法做到这一点? 更多的澄清: 我没有使用UISearchController过滤显示在其上的视图显示的结果,但一些其他无关的结果。 这将是像Facebook的“新闻”。 点击search栏会显示searchbuild议,然后在开始编辑时显示可能与新闻Feed无关的search结果。

在UISearchController的search栏上隐藏取消button

我试图隐藏在UISearchControllersearch栏的取消button,但不幸的是在viewDidLoad()中设置以下内容不起作用: override func viewDidLoad() { super.viewDidLoad() searchResultsTableController = UITableViewController() searchResultsTableController.tableView.delegate = self searchController = UISearchController(searchResultsController: searchResultsTableController) searchController.searchResultsUpdater = self searchController.searchBar.sizeToFit() searchResultsView.tableHeaderView = searchController.searchBar searchController.delegate = self searchController.dimsBackgroundDuringPresentation = false searchController.searchBar.delegate = self searchController.searchBar.searchBarStyle = .Minimal searchController.searchBar.showsCancelButton = false definesPresentationContext = true } 我也尝试在这个委托方法中使用上面的代码: func didPresentSearchController(searchController: UISearchController) { searchController.searchBar.showsCancelButton = false } 这种方法的工作原理,但隐藏它之前会显示取消button,这是不理想的。 有什么build议么?

每次点击取消button时,search栏会跳下一行

我已经实现了一个UISearchBar来search外部API中的项目目录。 searchfunction按预期工作,但问题是,每次按下search栏文本字段右侧的取消button,整个search栏向下移动一行,看起来像是推动整个表视图也是如此。 因此,如果我在search栏文本字段中input一个字母,然后按取消,search栏文本字段向下移动44px,这是行高度,并且表视图本身也被按下相同的数量。 如果我连续按input的东西,然后按取消,search栏将进一步向下移动视图。 任何build议将是伟大的! 这是我的代码: import Foundation import UIKit import ItemLogger private extension Selector { static let dismiss = #selector(SearchVC.dismissView) } extension SearchVC: UISearchResultsUpdating { func updateSearchResultsForSearchController(searchController: UISearchController) { let searchBar = searchController.searchBar let scope = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] filterContentForSearchText(searchController.searchBar.text!, scope: scope) } } extension SearchVC: UISearchBarDelegate { func searchBar(searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) { filterContentForSearchText(searchBar.text!, […]