なぜなら、私の配列に表示する項目が10種類あるにもかかわらず、私のtableViewは最近投稿された項目のデータを複数回表示しているからです。 など。では、10個の異なる項目をtableViewセルに表示するのではなく、10個のセルすべてに最新のポストを10回表示するだけです。なぜこれが起こっているのでしょうか?私は2つの異なるセル識別子を使用して問題を修正するかどうかを調べましたが、サイコロはありませんでした。以下のコードを参照してください。 cellForRow法でiOS/Obj-C - 同じデータを複数回表示するtableViewのセル?
ViewController.m
- (int)numberOfSectionsInTableView: (UITableView *)tableview
{
return 1;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (neighbourDetail > 0) {
NSString *thisUserId = [neighbourDetail objectForKey:@"uid"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"targetuser CONTAINS[cd] %@",
thisUserId];
NSArray *resultArray = [self.reviewData filteredArrayUsingPredicate:predicate];
return [resultArray count];
} else {
NSString *thisUserId = [self.myFriendData objectForKey:@"uid2"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"targetuser CONTAINS[cd] %@",
thisUserId];
NSArray *resultArray = [self.reviewData filteredArrayUsingPredicate:predicate];
return [resultArray count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (neighbourDetail > 0) {
static NSString *DogTableIdentifier = @"ReviewTableViewCell";
ReviewTableViewCell *cell = (ReviewTableViewCell *)[tableView dequeueReusableCellWithIdentifier:DogTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ReviewTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSString *thisUserId = [neighbourDetail objectForKey:@"uid"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"targetuser CONTAINS[cd] %@",
thisUserId];
NSArray *resultArray = [self.reviewData filteredArrayUsingPredicate:predicate];
NSString *reviewDes = resultArray[0][@"body"];
cell.reviewText.text = reviewDes;
NSString *firstName = resultArray[0][@"from first"];
cell.firstText.text = firstName;
NSString *timeStamp = resultArray[0][@"published at"];
cell.timeText.text = timeStamp;
NSString *secondLink = resultArray[0][@"from photo"];
[cell.profilePic sd_setImageWithURL:[NSURL URLWithString:secondLink]];
return cell;
} else if (neighbourDetail == NULL) {
static NSString *DogTableIdentifier2 = @"ReviewTableViewCell";
ReviewTableViewCell *cellTwo = (ReviewTableViewCell *)[tableView dequeueReusableCellWithIdentifier:DogTableIdentifier2];
if (cellTwo == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ReviewTableViewCell" owner:self options:nil];
cellTwo = [nib objectAtIndex:0];
}
NSString *thisUserId = [self.myFriendData objectForKey:@"uid2"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"targetuser CONTAINS[cd] %@",
thisUserId];
NSArray *resultArray = [self.reviewData filteredArrayUsingPredicate:predicate];
NSString *reviewDes = resultArray[0][@"body"];
cellTwo.reviewText.text = reviewDes;
NSString *firstName = resultArray[0][@"from first"];
cellTwo.firstText.text = firstName;
NSString *timeStamp = resultArray[0][@"published at"];
cellTwo.timeText.text = timeStamp;
NSString *secondLink = resultArray[0][@"from photo"];
[cellTwo.profilePic sd_setImageWithURL:[NSURL URLWithString:secondLink]];
return cellTwo;
}
return 0;
}
あなたの配列にはDublicateの値が含まれている可能性があります。 –
resultArray [0]はresultArray [indexPath.row]である必要があります –