1

我想要的是能够搜索 a UITableView,并将其他数组缩小到单元格的 textlabel 数组的结果。这可能对任何人都没有任何意义。这是一个例子。

一个称为titleArray填充单元格的 textLabel 的数组:

“丰田雅力士”
“福特逃脱”
“福特 F-150”

另一个称为detailArray填充单元格中 textLabel 下方的详细文本标签的数组:

“车”
“越野车”
“卡车”

当我搜索“福特”时,我希望 UITableView 显示这样的单元格:

单元 1:福特 Escape
        越野车

单元 2:福特 F-150
        卡车

但它显示如下:

单元 1:福特 Escape
        车

单元 2:福特 F-150
        越野车

本质上它缩小了范围titleArray但不是缩小范围,detailArray所以它显示对象 1 & 2 fromtitleArray但 0 & 1 from detailArray。如果这让您感到困惑,请提出任何问题!

4

2 回答 2

2

为此,您最好只拥有一个阵列。有两种方法可以做到这一点:

NSObject1)为数组的元素创建一个自定义类(派生自),可能命名为Vehicle。您的车辆类将具有“名称”属性和“类型”属性。

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

Vehicle *myVehicle = [[Vehicle alloc] init];
myVehicle.name = @"Ford Escape";
myVehicle.type = @"SUV";

[vehicleArray addObject:myVehicle];

2)让你的数组中的元素是 type NSDictionary。每个字典都有一个名称和类型的键值对。

NSMutableArray *vehicleArray = [[NSMutableArray alloc] init];

NSDictionary *myVehicle = [[NSDictionary alloc] initWithObjectsAndKeys:@"Ford Escape", @"name", @"SUV", @"type", nil];

[vehicleArray addObject:myVehicle];
于 2012-09-04T02:29:08.153 回答
1

在您的代码中,您可能会在名为 tableView:cellForRowAtIndexPath: 的消息中创建 UITableViewCell 对象。我会针对您的问题查看此代码。当您创建/检索 UITableViewCell 时,您将填写标题和详细信息(在调试器中检查)。我注意到您所遵循的示例是创建一个精简的项目数组以响应您的搜索参数。您似乎很可能需要在减少标题数组的同时减少细节数组。您可能还需要在您的详细信息数组中进行搜索(取决于您希望应用程序如何运行)。这可能会使您的搜索逻辑复杂一些。

//Possible search logic
for (int iii = 0; iii < titleArray.count; iii++) {
    if (<titleArray matches search string>) {
        [titlesToDisplay addObject:[titleArray objectAtIndex:iii]];
        [detailsToDisplay addObject:[detailArray objectAtIndex:iii]];
        //Assuming that you have titles and details in corresponding slots.
    }
}

现在,当您为 UITableViewCell 设置标题和详细信息设置时,您应该计算titlesToDisplay 中的条目并从titlesToDisplay 和detailsToDisplay 检索条目。

于 2012-09-04T02:29:39.247 回答