在用户交互发生之前,PFQueryTableViewController不应加载任何对象?

时间:2014-05-05 20:37:40

标签: ios objective-c uitableview parse-platform

我正在使用PFQueryTableViewController,它只应在用户按下按钮后加载对象。问题出在方法- (PFQuery *)queryForTable

这是我的代码:

- (PFQuery *)queryForTable
{
    if (self.searchText) {
        PFQuery *titleQuery = [PFQuery queryWithClassName:@"photo"];
        [titleQuery whereKey:@"titleKey" containsString:self.searchText];

        PFQuery *descriptionQuery = [PFQuery queryWithClassName:@"photo"];
        [descriptionQuery whereKey:@"descriptionKey" containsString:self.searchText];

        PFQuery *searchQuery = [PFQuery orQueryWithSubqueries:@[titleQuery, descriptionQuery]];

        return stringSearchQuery;
    }

    return nil;
}

问题在于,当用户决定使用时,我会在其他位置手动调用- (void)loadObjects。通过在此方法中返回nil,PFQueryTableView将无限期地保留加载指示符,并禁用用户交互。

我需要返回什么才能使表格视图为空白,然后加载用户交互后?

1 个答案:

答案 0 :(得分:2)

不要检查searchText是否存在,而是尝试将其默认为数据库中永远不会发生的事情,即像#&n;" @@@@@@@ Dummy string这样的虚拟字符串。将永远不会出现在数据库@@@@@@@和#34;。

这样,查询将被执行但不返回任何结果 - 这应该使tableview为空。然后,当用户输入搜索字符串并点击按钮时,将使用真实搜索字符串执行queryForTable代码。