gpt4 book ai didi

iOS/Obj-C - tableView 中的单元格多次显示相同的数据?

转载 作者:行者123 更新时间:2023-11-28 18:48:55 25 4
gpt4 key购买 nike

出于某种原因,我的 tableView 多次显示我最近发布的项目的数据,即使我的数组中有 10 个不同的项目要显示。 例如 不是在我的 tableView 单元格中显示 10 个不同的项目,它只是在所有 10 个单元格中显示 10 次最新帖子?知道为什么会这样吗?我尝试使用两个不同的单元格标识符来查看是否可以解决问题,但没有成功。请参阅下面的代码。

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;

}

最佳答案

你的问题是你只在单元格中显示数组的第一个元素

NSString *reviewDes = resultArray[0][@"body"];

应该是

NSString *reviewDes = resultArray[indexPath.row][@"body"];

并且最好保留strong 引用而不是每次都在cellForRownumberOfRow 中过滤

喜欢

@property (nonatomic, strong) NSArray *resultArray;

当你的数据来自网络服务或本地数据库时分配它

它让你的手机更快一些

希望对你有帮助

关于iOS/Obj-C - tableView 中的单元格多次显示相同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45952064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com