gpt4 book ai didi

iOS TableView 加载相同的单元格

转载 作者:行者123 更新时间:2023-11-29 00:00:09 26 4
gpt4 key购买 nike

我正在使用以下代码来创建选项卡 View 。当您单击一个选项卡时,它会向下扩展,这目前工作正常,但如果我打开第一个 indexPath 为 0 的选项卡,它应该加载一个单独的自定义打开 View ,它会加载,但是当我转到其他 indexPath 选项卡时,它会显示相同的 View ,但如果我重新加载应用程序并首先转到其他选项卡,它们会加载正确的 View 。这几乎就像应用程序正在制作缓存?

有什么办法可以解决吗??

谢谢

- (void)viewDidLoad {
row = 1000;
NSLog(@"row is %d", row);
[super viewDidLoad];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
infoStory = [userDefaults objectForKey:@"storyname"];
// Do any additional setup after loading the view.
numbers = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", nil];

// Initialize thumbnails
text = [NSArray arrayWithObjects: @"Arriving by Bus or Train", @"Arriving by Car (Autobahn 5)", @"Arriving by Car (Autobahn 6)", @"Wifi", @"Registration", @"Refreshments", @"Evening Event", @"Contact Information", nil];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(row == indexPath.row){
if(indexPath.row == 0){
static NSString *simpleTableIdentifier2 = @"TableViewCellOPENEDbustaxi2";
TableViewCell1 *cell = (TableViewCell1 *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier2];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableViewCellOPENEDbustaxi2" owner:self options:nil];
cell = [nib objectAtIndex:0];
}

cell.text.text = [text objectAtIndex:indexPath.row];
return cell;
}
else{
static NSString *simpleTableIdentifier = @"TableViewCellOPENED";
TableViewCell1 *cell2 = (TableViewCell1 *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell2 == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableViewCellOPENED" owner:self options:nil];
cell2 = [nib objectAtIndex:0];
}

cell2.text.text = [text objectAtIndex:indexPath.row];
return cell2;
}

}
else{
static NSString *simpleTableIdentifier = @"TableViewCellINFO";

TableViewCell1 *cell = (TableViewCell1 *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableViewCellINFO" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.text.text = [text objectAtIndex:indexPath.row];
return cell;
}
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{
return [numbers count];

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{
if(row == indexPath.row){
row = 1000;
NSLog(@"row is %d", row);
[self.tableViewObject reloadData];
}
else{
row = indexPath.row;
NSLog(@"row is %d", row);
[self.tableViewObject reloadData];
}


}

@end

最佳答案

我认为问题可能是您没有在 XIB 文件的单元格属性检查器中指定正确的重用标识符。您应该检查您是否在某处使用了错误的单元格,因此出队将返回一个意外的单元格。

您还可以手动设置适当的 reuseIdentifier,使用一些 setValue:forKey: 技巧:

static NSString *simpleTableIdentifier2 = @"TableViewCellOPENEDbustaxi2";
TableViewCell1 *cell = (TableViewCell1 *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier2];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableViewCellOPENEDbustaxi2" owner:self options:nil];
cell = [nib objectAtIndex:0];
[cell setValue:simpleTableIdentifier2 forKey:@"reuseIdentifier"];
}

其他单元格和标识符依此类推。

关于iOS TableView 加载相同的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49731944/

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