0

2 つのテーブルがあります (Cell Identifier: Call と Cell Identifier: Cell2)。オブジェクトの 2 つの配列 (テーブルごとに 1 つ) を渡していますが、tableView でこれを行うと、2 番目のテーブルは 2 番目の配列のデータではなく、最初のテーブルと同じデータを表示します。私の配列は、.h ファイルで NSMutableArray としてグローバルに設定されています。これは、問題がコード内にあると私が思うところです。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(!cell)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

   // NSString *currDate = [[array objectAtIndex:indexPath.row] objectForKey:@"Current Date"]; //added
   //  NSString *someOtherKey = [[array objectAtIndex:indexPath.row] objectForKey:@"Some other key"]; //added


    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    label1.text = [arrayDate1 objectAtIndex:indexPath.row];
    label2.text = [arrayDate2 objectAtIndex:indexPath.row];

   // cell.textLabel.text = [NSString stringWithFormat:@"%@  %@", currDate, someOtherKey]; //added

    return cell;



    //This will Load the second table (myTableView2)
    static NSString *CellIdentifier2 = @"Cell2";


    UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

    if(!cell2)
    {
        cell2 = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
    }

    // NSString *currDate = [[array objectAtIndex:indexPath.row] objectForKey:@"Current Date"]; //added
    //  NSString *someOtherKey = [[array objectAtIndex:indexPath.row] objectForKey:@"Some other key"]; //added


    cell2.textLabel.text = [array2 objectAtIndex:indexPath.row];


    return cell2;
}
4

1 に答える 1

1

これは確かにこの関数の問題です:

記述されたコードは、最初の行に到達するまで単純に実行され、return cell;それ以降はコードを実行しないため、常にCellセルのインスタンスが返されます。

このように 2 つのテーブルを使用するには、それらを区別できる必要があります。通常、宣言されたプロパティに両方を格納します。この回答の残りの部分では、あなたがそれを行っており、それらが and と呼ばれていると仮定しtable1ますtable2

コードを次のように変更します。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([tableView isEqual:self.table1]) {
        static NSString *CellIdentifier = @"Cell";


        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if(!cell)
        {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }

       // NSString *currDate = [[array objectAtIndex:indexPath.row] objectForKey:@"Current Date"]; //added
       //  NSString *someOtherKey = [[array objectAtIndex:indexPath.row] objectForKey:@"Some other key"]; //added


        cell.textLabel.text = [array objectAtIndex:indexPath.row];
        label1.text = [arrayDate1 objectAtIndex:indexPath.row];
        label2.text = [arrayDate2 objectAtIndex:indexPath.row];

       // cell.textLabel.text = [NSString stringWithFormat:@"%@  %@", currDate, someOtherKey]; //added

        return cell;
    } else if ([tableView isEqual:self.table2]) {


        //This will Load the second table (myTableView2)
        static NSString *CellIdentifier2 = @"Cell2";


        UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];

        if(!cell2)
        {
            cell2 = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2];
        }

        // NSString *currDate = [[array objectAtIndex:indexPath.row] objectForKey:@"Current Date"]; //added
        //  NSString *someOtherKey = [[array objectAtIndex:indexPath.row] objectForKey:@"Some other key"]; //added


        cell2.textLabel.text = [array2 objectAtIndex:indexPath.row];


        return cell2;
    }

}

// If you reach this point, we don't recognize the table and return `nil`, then the program will crash.  Handle this however you want.
return nil;
于 2012-11-19T00:30:28.993 に答える