0

plist ファイルからロードされるTableView10 個のセクションがあり、一部のセクションをオフにできるスイッチがあります。セクションを無効にできるという事実により、セクションごとに特定の背景色を設定する必要があります。

例:

Black設定する必要があるセクションについてblack background

Red設定する必要があるセクションについてred background

等々...

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0,0,320,44)];
     tempHeaderView.backgroundColor=[UIColor blackColor];

     [tempHeaderView addSubView: tempHeaderLabel];
     return tempHeaderView;
}
4

2 に答える 2

3

NSArrayのオブジェクトをクラス (デリゲート/データ ソースとして機能するビュー コントローラー) のインスタンス変数として保持し、UIColorそれを と呼びますsectionColors。この配列の色を plist の値から初期化するか、色をハードコーディングできます。

次に、次のコードを使用します。

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0,0,320,44)];


    // This changed:
    tempHeaderView.backgroundColor = [sectionColors objectAtIndex:section];

    [tempHeaderView addSubView: tempHeaderLabel];

    return tempHeaderView;
    // Use 'return [tempHeaderView autorelease];' in a non-ARC environment
}

これは、配列を初期化する方法です。

// Assuming your table has three sections (indices 0 through 2)

UIColor* colorForSection0 = [UIColor colorwithRed:redValue0 green:greenValue0 blue:blueValue0 alpha:1.0];
// redValue0, etc. are floats between 0.0 and 1.0 that you can read from a .plist
// Alternatively, store them as integers between 0 and 255, and divide them by 255.0 
// and store on CGFloat variables before creating color.

// ...Do the same for the other colors...

// Now that you have the colors, create array and store in ivar 'sectionColors'
sectionColors = [[NSArray alloc] initWithObjects: 
    ColorforSection0, ColorForSection1, colorForSection2, nil];

(上記のコードは、テーブル ビュー データ ソースのイニシャライザ内に配置する必要があります)

于 2012-06-18T06:28:25.483 に答える
2

渡されたセクションを使用して、plist ファイル内のセクションの 1 つに関連付ける必要があります。おそらく、plist に存在する「セクション」の辞書をロードし (おそらくセクションと同じ配列内の位置に基づいてロードされます)、if() で valueForKey:@"enabled" などを使用します。チェックし、それに応じて状態を設定します。

于 2012-06-18T06:29:21.927 に答える