2012-09-04 38 views
1

我想要的是能夠搜索UITableView,並將其他數組縮小到單元格的文本標籤數組的結果。這可能對任何人都沒有意義。這是一個例子。如何從IOS中的UITableView搜索多個NSArray

的數組稱爲titleArray填充細胞的爲textLabel:

 
"Toyota Yaris" 
"Ford Escape" 
"Ford F-150" 

另一個陣列稱爲detailArray,填補了爲textLabel下面的詳細文本標籤在單元格:

 
"Car" 
"SUV" 
"Truck" 

當我搜索「福特「我想讓UITableView顯示像這樣的單元格:

 
Cell 1: Ford Escape 
     SUV 

Cell 2: Ford F-150 
     Truck 

但它顯示的是這樣的:

 
Cell 1: Ford Escape 
     Car 

Cell 2: Ford F-150 
     SUV 

本質上,它縮小了titleArray但不是detailArray所以它是顯示對象1 & 2從titleArray但0 & 1從detailArray。如果這讓您困惑,請提出任何問題!

回答

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條目。

2

爲此,只有一個陣列會更好。有兩種方法可以做到這一點:

1)爲您的數組元素創建自定義類(從NSObject派生),可能命名爲Vehicle。你的車輛類將有一個「名稱」屬性和一個「類型」屬性。

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

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

[vehicleArray addObject:myVehicle]; 

2)您的陣列中的元素是NSDictionary類型的元素。每個字典都有一個名稱和類型的鍵值對。

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

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

[vehicleArray addObject:myVehicle]; 
+0

從長遠來看,一個陣列肯定會有更多的好處。我真的推薦使用這種方法。 – Mazyod