当Segue发生另一个视图控制器时刷新UITableView

时间:2014-04-04 11:40:46

标签: ios iphone uilabel uitableview uisearchbar

我有一个奇怪的情况,我相信这将是一个简单的解决方案,但我无法找到那是什么。

我的UITableViewController顶部有一个UISearchBar。用户点击UITableView(添加条目)填充NavigationBarButton,并将一些信息填入UITextFields,并保存到Core DataUITableView正在使用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)如果

,删除noresultsLabel

3)显示没有搜索结果的TableView

我将如何实现这一目标?

任何指导都会非常感激。

1 个答案:

答案 0 :(得分:0)

我以粗暴的方式解决了这个问题;在搜索启动并运行时禁用“添加条目”按钮。我不相信这是实现此目的的最佳方式,但用户必须取消搜索才能添加条目。我将继续寻找更好的方法来实现这一目标。