【发布时间】:2014-12-01 02:13:50
【问题描述】:
我有一个UISearchController 和一个UITableViewController 作为searchResultsController,这个searchController 的UISearchBar 设置在我的根ViewController 中显示的当前tableView 的tableHeaderView 中。正如预期的那样,几乎一切都运行良好。但是在UISearchBar 的动画中(当我点击searchBar 并且UINavigationBar 隐藏并且searchBar 转到顶部,如UISearchDisplayController 中)我有一个奇怪的行为。它没有移动到UINavigationBar (y: 0) 的位置,而是跳出屏幕,然后开始显示取消按钮的动画。我尝试将我的实例化代码移动到viewDidLoad 而不是init,但事情是一样的。我认为问题的中心在于searchResultsController 的视图框架,但我不确定(我尝试设置框架,但没有成功)。我所做的一切都是纯代码。
以下是代码的相关部分:
- (void) viewDidLoad {
[super viewDidLoad];
// search controller setup
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;
}
我对@987654337@ 有一个延迟加载:
- (UITableViewController *)searchResultsController {
if (_searchResultsController == nil) {
_searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
_searchResultsController.tableView.delegate = self;
_searchResultsController.tableView.dataSource = self;
}
return _searchResultsController;
}
我已经从苹果下载了示例代码,但他们使用 storyBoards 和 UITableViewCell 的 xib,SearchController 在项目中完美运行。有没有人有同样的问题?我怎样才能解决这个问题?任何解决方案或建议将不胜感激。
感谢您的关注。
【问题讨论】:
-
你有没有发现这个问题?目前我的搜索栏也有类似的问题。
-
不,洛伦佐。不幸的是,我为这个问题使用了已弃用的 api。使用情节提要似乎可以很好地工作(我尝试了苹果的示例应用程序),但在代码中我遇到了这个奇怪的错误。
-
好的,谢谢。您能否详细说明您使用的有效方法?我也一直在查看 Apple 的示例,他们使用故事板作为表格和详细信息视图,但所有搜索栏组件都是在代码中完成的,这是你做的吗?
-
没关系!我刚刚注意到我错过了
self.definesPresentationContext = YES;这条线,它最终变得至关重要。 -
看看这个之前的帖子是否有帮助:stackoverflow.com/questions/28326269/…
标签: ios objective-c uitableview uisearchbar uisearchcontroller