我有一个UITableView
,其数据源和委托不是由放置它的视图控制器处理,而是由另一个名为AbstractInviteFriendsDataSourceDelegate
的类处理。
我在UISearchBar
中添加UISearchDisplayController
UITableView
并手动(不使用故事板界面)将其委托和dataSource设置为处理UITableView的dataSource和委托的控制器。
- (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
委托和dataSource实现任何方法。
我尝试实现searchBarShouldBeginEditing
只是为了查看它是否在搜索栏消失之前被调用,是的,它被调用但是在此方法返回后,搜索栏消失了。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
return YES;
}
修改
我已经解决了这个问题,似乎我从故事板中得到了searchContentController
个问题。我将它设置回包含表视图的视图控制器,现在没问题。
答案 0 :(得分:2)
我也遇到了同样的问题,并通过在表格视图中添加搜索栏来解决这个问题。