【发布时间】:2016-05-24 05:03:10
【问题描述】:
单击导航栏按钮时,我以模态方式呈现视图。这个视图有一个 tableview 视图。单击 tableview 行时,视图将被关闭。添加 UISearchController 时遇到问题。当我从搜索栏的结果中单击一个项目时,模态消失,但在它后面是相同的确切视图,但 tableview 显示的是一个完全填充的视图。一秒钟后,该视图以模态方式消失,我又回到了导航视图。我包含了一个 gif,以帮助直观地解释我的问题。这是代码sn-ps。
在带有 UISearchBar 的视图控制器中:
在 cellforRowAtIndexPath 方法中
//Check to see if results for search bar
if ([self.searchController isActive] && ![self.searchController.searchBar.text isEqualToString:@""]) {
restaurantCellData = self.searchResults[indexPath.row];
} else {
restaurantCellData = self.restaurantLocations[indexPath.row];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
RestaurantLocationData *restaurantCellData = (RestaurantLocationData *)[self.restaurantLocations objectAtIndex:indexPath.row];
if (self.restaurantSelectedCallBack) {
self.restaurantSelectedCallBack(restaurantCellData);
}
[self.nearByTableView deselectRowAtIndexPath:indexPath animated:YES];
}
在呈现视图控制器中,我有回调块来关闭呈现的视图
vc.restaurantSelectedCallBack = ^(RestaurantLocationData *restaurantValue) {
self.restaurantInfo = restaurantValue;
[[API sharedInstance] setRestaurantInfoCustom:restaurantValue];
[self dismissViewControllerAnimated:YES completion:nil];
};
vc.searchSelectedCallBack = ^(RestaurantLocationData *restaurantValue) {
self.restaurantInfo = restaurantValue;
[[API sharedInstance] setRestaurantInfoCustom:restaurantValue];
[self dismissViewControllerAnimated:NO completion:nil];
};
【问题讨论】:
-
在dismiss viewcontroller之前或之后试试这行代码[self.searchDisplayController setActive:NO animated:YES];
-
自 iOS 8 起已弃用
-
searchController.active = false 或关闭 searchController,因为对我来说两者都在工作。
-
谢谢@JP_Mob ,
searchController.active = false在 viewDidDisappear 上帮助了我
标签: ios objective-c uitableview uisearchcontroller