在TableViewCell中模糊视图

时间:2015-10-15 14:36:56

标签: ios objective-c uitableview uivisualeffectview uiblureffect

我在视图控制器中创建了模糊视图,并添加了自定义表格视图单元格的子视图。问题是,如果我选择第一个单元格,它可以很好地工作。但如果我选择第二个单元格,则在第三个单元格中显示模糊视图。如果我选择第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]];}
    }
}

0 个答案:

没有答案