iOS UI测试willDisplayCell无法正常工作

时间:2016-04-12 07:41:45

标签: ios xcode-ui-testing

我刚刚开始在iOS学习UI测试。目前,我的应用程序就像facebook(show newfeed)。当用户向下滚动并且它是最后一行时,我需要请求新数据,我确实喜欢这样。

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == self.tblSortingInListingVC)
    {
        return;
    }

    if (tableView == self.tblListing || tableView == self.searchDisplayController.searchResultsTableView)
    {
        NSInteger lastRow = 0;
        if (tableView == self.tblListing) lastRow =  self.viewData.count - 1;
        else lastRow =  self.searchViewData.count - 1;

        if ([indexPath row] == lastRow)
        {
            if(tableView == self.tblListing || tableView == self.searchDisplayController.searchResultsTableView)
            {
                [self loadMoreToListingView]; //Method to request to server to get more data
            }
        }
        return;
    }
}

问题是 if([indexPath row] == lastRow)总是如果我继续请求我是否像这样进行UI测试(键入或滚动表格)。我怎么这样做,它不会一次又一次地请求?

XCUIApplication *app = [[XCUIApplication alloc] init];
[app.tables.staticTexts[@"Apr 04 16:28"] tap];

1 个答案:

答案 0 :(得分:0)

您需要一个标记(称为isReload)来再次管理您的请求。再次。 那么你如何管理这面旗帜?在ViewController中它非常简单 定义变量isReload并设置它的初始值YES。现在检查isReload标志,以您实现的loadMoreToListingView方法调用Web服务。

-(void)loadMoreToListingView {

    if (isReload) {
        // here call your web -service ...
    }
}

现在响应网络服务,您需要检查搜索列表&我正在执行以下更新isReload标记。

NSArray *searchData = response[@"searchData"];
// So when ever no data comes from server then this flag will be flase.
// So isReload will not call webservice Again&again
isReload = gps_details.count > 0;