0

我正在开发一个业务目录,其中有一个包含业务类型(美发师、机械师等)的数组和一个包含业务部分的数组(例如 A 或 B 或 C 或 D...或 Z 等)。

数据将显示在带有 AZ 索引的 tableview 中。

我已将其设置如下,但想不出根据业务部门信函返回部门编号的方法。

我想返回数组中每个部分中具有相同业务类型字母(例如 A 或 B 或 C 或 D ... 或 Z 等)的对象数。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 26;
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
    [tempArray addObject:@"A"];
    [tempArray addObject:@"B"];
    [tempArray addObject:@"C"];
    [tempArray addObject:@"D"];
    [tempArray addObject:@"E"];
    [tempArray addObject:@"F"];
    [tempArray addObject:@"G"];
    [tempArray addObject:@"H"];
    [tempArray addObject:@"I"];
    [tempArray addObject:@"J"];
    [tempArray addObject:@"K"];
    [tempArray addObject:@"L"];
    [tempArray addObject:@"M"];
    [tempArray addObject:@"N"];
    [tempArray addObject:@"O"];
    [tempArray addObject:@"P"];
    [tempArray addObject:@"Q"];
    [tempArray addObject:@"R"];
    [tempArray addObject:@"S"];
    [tempArray addObject:@"T"];
    [tempArray addObject:@"U"];
    [tempArray addObject:@"V"];
    [tempArray addObject:@"W"];
    [tempArray addObject:@"X"];
    [tempArray addObject:@"Y"];
    [tempArray addObject:@"Z"];

    return tempArray;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// I want to return the number of objects in the array that have the same section name (EG. A or B or C etc)
}
4

2 回答 2

1

您可以创建字典或数组数组。任何一个都适合你。

看看这个例子:

我有两个数组alphabets,其中包含 A、B、C...Z。其他数组words包含在 index[0]={apple, axe..}, index[1]={ball, bat}, index[3]={cow, cat, car, cardamom}.... 所以形成一个二维数组。

注意:这里很少有不需要的东西,你可以省略它们,比如字幕。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return [self.words count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [[self.words objectAtIndex:section]count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
    cell.textLabel.text=[[self.words objectAtIndex:indexPath.section]objectAtIndex:indexPath.row];
    cell.detailTextLabel.text=[NSString stringWithFormat:@"This is detailed subtitle for %@.",cell.textLabel.text];
    return cell;

}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return [self.alphabets objectAtIndex:section];
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;{
    return self.alphabets;
}
于 2013-01-07T10:16:38.357 回答
0

您可以NSCountedSet从原始数组创建一个知道每个对象出现多少次的

NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:yourArray];

然后,您可以countForObject:在集合上使用每个对象的计数。

如果顺序对您很重要,那么您可以枚举数组并使用countForObject:数组中的对象调用集合。

于 2013-01-07T10:25:16.020 回答