我有一个奇怪的情况,我相信这将是一个简单的解决方案,但我无法找到那是什么。
我的UITableViewController
顶部有一个UISearchBar
。用户点击UITableView
(添加条目)填充NavigationBarButton
,并将一些信息填入UITextFields
,并保存到Core Data
。 UITableView
正在使用NSFetchedResultsController
。
在searchBar
中,用户可以搜索姓名。搜索本身效果很好,因为如果名称不存在,则会向用户显示UILabel
说"未找到结果"。此标签是在viewDidLoad
的{{1}}中创建的,并显示在UITableView
searchBar's
方法中:
textDidChange
问题
问题来自一系列特定步骤。
1)搜索不存在的条目
2)不会显示结果标签
3)在不取消搜索的情况下,添加条目(分段到新视图控制器)
4)当"保存"在新视图控制器上单击按钮,它会关闭该视图并将用户带回UITableView。
5)无结果标签仍然可见,搜索栏中的搜索字符串也是如此。
即使您搜索特定用户并找到匹配结果,然后在取消搜索之前添加条目,也会出现相同的结果;当您返回UITableView时,仍会显示搜索。
我尝试过几件事的组合。
在- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
self.timelineSearchBar.showsCancelButton = YES;
_fetchedResultsController = nil;
NSError *error;
if (![[self fetchedResultsController] performFetch:&error])
{
// Handle Error
}
else
{
[self.timelineTableView reloadData];
[self.noResultsLabel setHidden:_fetchedResultsController.fetchedObjects.count > 0];
if (![self.timelineSearchBar isFirstResponder])
{
self.shouldBeginEditing = NO;
[self.timelineTableView reloadData];
[self.timelineSearchBar resignFirstResponder];
}
}
}
中,我放了viewWillAppear
;但这并没有什么不同。
我认为我必须在[self.tableView reloadData]
中做一些事情,所以如果它转移到添加条目或者用户点击一个单元格(两个不同的段),它应该:
1)取消现有搜索
2)如果
,删除noresultsLabel3)显示没有搜索结果的TableView
我将如何实现这一目标?
任何指导都会非常感激。
答案 0 :(得分:0)
我以粗暴的方式解决了这个问题;在搜索启动并运行时禁用“添加条目”按钮。我不相信这是实现此目的的最佳方式,但用户必须取消搜索才能添加条目。我将继续寻找更好的方法来实现这一目标。