0

マスター/詳細アプリケーションテンプレートを使用しています。テキストラベルを設定するためにNSArrayをハードコーディングしました。

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

次に、それぞれ5ワードの2つの配列を作成し、それらの2つの配列を別の配列に配置しました。

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、そして、見つけて、行って、持っている

グループ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は、文字列ではなく配列である必要があります。

次に、示した方法で配列要素を 1 行にフォーマットするには、次のようにそれらを 1 つの文字列に連結できます。

- (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

static 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 に答える