レシートとマイレージの2つの異なるオブジェクトを表示するために使用しているUITableViewがあります。
これは、これを実行するために使用していた元のコードです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Project *project = [[Project alloc] init];
project = [appDelegate.projects objectAtIndex:indexPath.section];
if (indexPath.row >= [project.receipts count])
{
if (indexPath.row >= [project.milages count]){
return NULL;
}
else {
//Create a new journey cell and set its UI values
MilageCell *cell = (MilageCell *)[tableView
dequeueReusableCellWithIdentifier:@"MilageCell"];
Milage *milage = [project.milages objectAtIndex:indexPath.row];
cell.locationLabel.text = milage.location;
cell.dateLabel.text = [NSString stringWithFormat:@"%@", milage.date];
cell.totalLabel.text = [NSString stringWithFormat:@"£%@", milage.total];
return cell;
}
}
else
{
ReceiptCell *cell = (ReceiptCell *)[tableView
dequeueReusableCellWithIdentifier:@"ReceiptCell"];
Receipt *receipt = [project.receipts objectAtIndex:indexPath.row];
cell.dateLabel.text = receipt.receiptDate;
cell.descriptionLabel.text = receipt.descriptionNote;
cell.amountLabel.text = [NSString stringWithFormat:@"£%@", receipt.amount];
return cell;
}
}
各配列(project.receiptsとproject.milages)に1つのオブジェクトがある場合、このコードはまったく機能しないことを認識しています。また、このメソッドからNULLを返すことはできません。私がやろうとしているのは、どういうわけかすべてのレシートオブジェクト、次にすべてのマイレージオブジェクトを表示することです(つまり、テーブルビューのセクション0には3つのレシートと3つのマイレージがあり、最初にレシート、次にマイレージが表示されます)。しかし、私はこれを行う方法がまったくわかりません。誰かが私がこの問題を解決する方法を説明できますか?すべてのマイレージオブジェクトとレシートオブジェクトの単一の配列を作成し、適切なセルタイプを使用するために、このメソッドにどの種類のオブジェクトがあるかを何らかの方法で識別できる方法はありますか?
どうもありがとう、
ジャック