我在视图控制器中创建了模糊视图并添加了自定义表格视图单元格的子视图。问题是如果我选择第一个单元格,它会完美运行。但是如果我选择第二个单元格,模糊视图会显示在第三个单元格中。如果我选择第 3 个单元格,则模糊视图显示在第 5 个单元格中。
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"TableViewCell"];
cell = [TableViewCell new];
[self resetBoolArray];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
self.effectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
cell = (TableViewCell *) [self.tableView dequeueReusableCellWithIdentifier:@"TableViewCell"];
self.effectView.frame = cell.frame;
[self.effectView setHidden:[[self.boolAry objectAtIndex:indexPath.row] boolValue]];
[cell addSubview:self.effectView];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self resetBoolArray:indexPath.row];
[self.tableView reloadData];
NSLog(@"selected indexpath %ld",indexPath.row);
}
- (void)resetBoolArray {
self.boolAry = [NSMutableArray new];
for (int i = 0; i < 6; i++) {
[self.boolAry addObject:[NSNumber numberWithBool:YES]];
}
}
- (void)resetBoolArray: (NSInteger)indexpath {
self.boolAry = [NSMutableArray new];
for (int i = 0; i < 6; i++) {
if(i == indexpath) {
[self.boolAry addObject:[NSNumber numberWithBool:NO]];}
else{
[self.boolAry addObject:[NSNumber numberWithBool:YES]];}
}
}