0

我正在使用主从应用程序模板。我硬编码了一个 NSArray 来设置文本标签:

groups = [[NSArray alloc] initWithObjects:@"Group1", @"Group2", nil];

然后我创建了两个数组,每个数组包含五个单词,并将这两个数组放入另一个数组中:

group1 = [[NSArray alloc] initWithObjects:@"A", @"and", @"find", @"go", @"have", nil];
group2 = [[NSArray alloc] initWithObjects:@"here", @"jump", @"not", @"on", @"one", nil];
groupWords = [[NSArray alloc] initWithObjects:group1, group2, nil];

在 tableView:cellForRowAtIndexPath: 我试图将单元格的文本设置为“Group#”,将详细文本设置为单词列表。我能够为每个单元格设置文本标签,但我似乎无法弄清楚如何传递字符串数组来设置每个详细文本标签。

例子:

第 1 组

A, and, find, go, have

第 2 组

在这里,跳,不,上,一个

这是我到目前为止所拥有的:

static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [groups objectAtIndex:[indexPath row]];

    NSString *detailWords = [self.groupWords objectAtIndex:[indexPath row]];
    NSLog(@"%@", detailWords);

    cell.detailTextLabel.text = 
    return cell;

很感谢任何形式的帮助。

4

3 回答 3

2

命名的变量detailWords应该是一个数组而不是一个字符串。

然后按照您显示的方式格式化一行中的数组元素,您可以将它们连接成一个字符串,例如:

- (NSString *)stringFromArrayOfStrings:(NSArray *)array {
    NSMutableString *result = [NSMutableString stringWithString:@""];
    if ([array count] > 0) {
        [result appendString:[array objectAtIndex:0]];
        for (int i = 1; i < [array count]; i++) {
            [result appendString:@", "];
            [result appendString:[array objectAtIndex:i]];
        }
    }
    return result;
}
于 2012-04-30T00:40:50.977 回答
1
NSMutableString *detailText = [[NSMutableString alloc] init];
for (int i = 0; i < [[self groupWords] count]; i = i + 1) {
    NSMutableArray *subArray = [[self groupWords] objectAtIndex:i];
    [detailText appendString:[subArray objectAtIndex:[indexPath row]]];
    if (i < [[self groupWords] count] - 1) [detailText appendString:@","];
}
[[cell detailTextLabel] setText:detailText];

编辑/更新: 我的错,我想我现在明白你的意思了。尝试这个:

// Declare the mutable string container
NSMutableString *detailText = [[NSMutableString alloc] init];
// Get the array you want to "combine"
NSArray *array = [[self groupWords] objectAtIndex:[indexPath row]];
// Iterate the array (this block assumes you've got NSStrings in the array;
// it might break otherwise)
for (int i = 0; i < [array count]; i = i + 1) {
    [detailText appendString:[array objectAtIndex:i]];
    if (i < [array count] - 1) [detailText appendString:@", "];
}
[[cell detailTextLabel] setText:detailText];
于 2012-04-30T02:02:23.233 回答
0

静态 NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}


cell.detailTextLabel.text = [[self.groupWords objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
return cell;

我希望这对你有帮助......

于 2012-04-30T05:54:19.127 回答