我有一个UITableView
显示聊天室列表的地方。我还使用搜索栏来查找特定的聊天室。当用户点击一个单元格时,它会进入聊天室对话,显示消息和一个用于发送消息的文本框。
但是,如果我使用搜索栏搜索聊天室,当我点击任何单元格时,segue 完成但聊天室的布局是错误的。对话视图(自定义UITableView
)填满了整个屏幕,并且文本框(位于底部,就在 a 的顶部TabBar
)不会出现。
尝试解决此问题时,我发现在搜索是否在点击任何单元格之前关闭键盘时,我能够正确地进行搜索,因此似乎只有在键盘存在时才会发生这种情况。
我想我可以在 segueing 之前以编程方式关闭键盘来解决这个问题,但我也担心我可能UISearchBar
对 . 或UITableView
.
我的目标项目是 iOS 5.1,我已经在运行 5.1 的 iPad 3、运行 6.01 的 iPad 2 和 iPhone 模拟器中重现了这个问题。
编辑
这是我用来segue的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.searchController.searchResultsTableView == tableView) {
self.selectedItem = [self.filteredItems objectAtIndex:[indexPath row]];
} else {
self.selectedItem = [self.items objectAtIndex:[indexPath row]];
}
[self performSegueWithIdentifier:@"segueChatRoom" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[self.view endEditing:YES]; // This line solves the issue
UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Custom title" style: UIBarButtonItemStyleBordered target: nil action: nil];
[[self navigationItem] setBackBarButtonItem: newBackButton];
if ([segue.identifier isEqualToString:@"segueChatRoom"]) {
[segue.destinationViewController setItem:self.selectedItem];
}
}