1

字幕を追加するより良い方法を見つけようとしています。現在、2つの異なる配列があり、タイトルと同じ配列で字幕を追加できるかどうか疑問に思っていました。

lodgeList = [[NSArray alloc]initWithObjects:

             //Abingdon
             @"Abingdon Lodge No. 48",  // This is the Title 
             // I would like to add the subtitle here

             @"York Lodge No. 12",

             //Alberene
             @"Alberene Lodge No. 277",

             // Alexandria
             @"A. Douglas Smith, Jr. No. 1949",
             @"Alexandria-Washington Lodge No. 22",
             @"Andrew Jackson Lodge No. 120",
             @"Henry Knox Field Lodge No. 349",
             @"John Blair Lodge No. 187",
             @"Mount Vernon Lodge No. 219",

上記の名前のそれぞれに字幕を追加するにはどうすればよいですか?

4

1 に答える 1

6

タイトルとサブタイトルのNSStringプロパティを持つクラスを作成します。オブジェクトをインスタンス化します。配列に入れます。

-(UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     //…
    MyLodge *lodge = lodgeList[indexPath.row];
    cell.textLabel.text = lodge.title;
    cell.detailLabel.text = lodge.subtitle;
    return cell;
}

カスタムクラスの代わりに、NSDictionariesを使用することもできます。

lodgeList = @[ 
                @{@"title":@"Abingdon Lodge No. 48",
                  @"subtitle": @"a dream of a lodge"},
                @{@"title":@"A. Douglas Smith, Jr. No. 194",
                  @"subtitle": @"Smith's logde…"},
             ];

このコードは、新しいリテラル構文を特徴としています

-(UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     //…
    NSDictionary *lodge = lodgeList[indexPath.row];
    cell.textLabel.text = [lodge objectForKey:@"title"];
    cell.detailLabel.text = [lodge objectForKey:@"subtitle"];
    return cell;
}

実際には、両方のソリューションのKey-Value-CodingtableView:cellForRowAtIndexPath:により、同じ実装を使用できます。

-(UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     //…
    id lodge = lodgeList[indexPath.row];
    cell.textLabel.text = [lodge valueForKey:@"title"];
    cell.detailLabel.text = [lodge valueForKey:@"subtitle"];
    return cell;
}

これはプロトタイプセルで機能しますか?

はい、«WWDC 2011、セッション309 — Interface Builderストーリーボードの紹介»に示すように、UITableViewCellのサブクラスを作成し、モデルを保持するプロパティとラベルを反映するプロパティを指定します。それらのラベルはストーリーボードに配線されます

于 2012-12-16T17:14:26.260 に答える