1

UITableViewCellUILabelテキスト、タイトルなどのカスタム セルのコンテンツUIButtonは、単一のテーブル ビューでカスタム セルの数を使用してテーブル ビューをスクロールした後、デフォルト値 (ラベル、ボタン) にリセットされます。これらは、セルごとに異なる識別子と異なるカスタムセル名を使用して、単一のテーブルビューでカスタムセルの数を生成するために使用したコードです。

static NSString *CellIdentifier = @"cell";

UITableViewCell *cell = (customCell1 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) cell = [[customCell1 alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
{
    NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"customCell1" owner:self options:nil];
    for (id currentObject in topLevelObjects)
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]])
        {
            cell = (customCell1 *)currentObject;
            break;
        }
    }
}

static NSString *CellIdentifier2 = @"cell2";

UITableViewCell *cell2 = (customCell2 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

if (cell2 == nil) cell2 = [[customCell2 alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
{
    NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"customCell2" owner:self options:nil];
    for (id currentObject in topLevelObjects)
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]])
        {
            cell2 = (customCell2 *)currentObject;
            break;
        }
    }
}
cell.label = @"Test";
[cell2.button setTitle:@"Test Button" forState:UIControlStateNormal];
return cell;
return cell2;
4

2 に答える 2

0

テーブルビューのセルは、セル識別子を使用してデキューすることによって動的に作成されます。上記のコードでは、常に最初の「戻りセル」が返されます。データ ソース メソッドは、作成後に一度に 1 つのセルのみを返すことができます。したがって、用途に応じてセルを返したい場合は、以下のようにする必要があります

  • (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{ // 理想的には、カスタム セルは次のように作成する必要があります

if(condition when you wan this cell1)
{
    //create the custom cell1 here  and return it as given below

    static NSString *cellIdentifier = @"MyCustomCell";

    // Similar to UITableViewCell
    MyCustomCell *cell = (MyCustomCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    return cell1;
}
else if(when you want to create this cell2)
{
   // create the custom cell2 here  and return it
    return cell2;
}
// Create the default UI table view cell and return it . if any of the above condition did not satisfied, it will return the default cell.

// ここにデフォルトの UI テーブルを作成し、それを返します return cell; }

于 2015-06-21T18:47:57.503 に答える