【发布时间】:2013-11-21 09:03:43
【问题描述】:
我有一个 UITableView,其数据源和委托不是由放置它的视图控制器处理,而是由另一个名为 AbstractInviteFriendsDataSourceDelegate 的类处理。
我在UITableView 中放置了UISearchBar 和UISearchDisplayController,并手动(不使用情节提要接口)将它们的委托和数据源设置为处理UITableView 的数据源和委托的控制器。
- (id)init
{
self = [super init];
if (self) {
friendsArray = [FriendsToInvite new];
UISearchBar *searchBar = [self.delegate theSearchBar];
searchBar.delegate = self;
UISearchDisplayController *searchDisplay = [self.delegate theSearchDisplayController];
searchDisplay.delegate = self;
searchDisplay.searchResultsDataSource = self;
searchDisplay.searchResultsDelegate = self;
}
return self;
}
我认为这没问题,因为当我实现搜索栏的委托方法之一时,它被正确调用了。
但是现在,当我点击搜索栏时,它会向左滑动,为取消按钮腾出空间,然后它就消失了。我还没有为UISearchBar 委托、UISearchDisplayController 委托和数据源实现任何方法。
我尝试实现searchBarShouldBeginEditing 只是为了看看它是否在搜索栏消失之前被调用,是的,它被调用了,但是在这个方法返回之后搜索栏消失了。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
return YES;
}
编辑:
我已经解决了这个问题,似乎我从情节提要中有searchContentController 出口。我将它设置回包含表格视图的视图控制器,现在可以了。
【问题讨论】:
-
尝试在你的 VC 中设置约束。
-
由于某种原因,当我在情节提要中选择搜索栏时,它不允许我放置约束,我无法选择其中任何一个。
-
我刚刚制作了示例项目,放置了一个 UITableView,并在其中放置了 UISearchDisplayController。一切都好。请向我们提供更多反馈或上传您的示例项目,以便我们查看此问题。
-
好的,我现在将扩展问题。
-
我已经解决了这个问题,请查看上方。
标签: ios uitableview delegates uisearchbar