我在切换开启时切换了我的tableview我需要更改tableview单元格中的视图,因为我已经写了
-(void)didchangeswitchpostion:(UISwitch *)sender{
[tasklogtableview reloadRowsAtIndexPaths:@[reloadindexpath] withRowAnimation:UITableViewRowAnimationNone];
}
在索引路径的行的单元格中,我已经完成了
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;{
static NSString *cellidentifier=@"cellidentifier";
cell=(TaskLogTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (cell==nil) {
NSArray *nib=[[NSBundle mainBundle]loadNibNamed:@"TaskLogTableViewCell" owner:self options:nil];
cell=[nib objectAtIndex:0];
}
if ([cell.autoswitch isOn]) {
cell.lblfrom.hidden=YES;
cell.lblhours.hidden=YES;
cell.lblfromtime.hidden=YES;
}
return cell;
}
但我无法打开其他电源,重新加载电池是否有任何问题。
答案 0 :(得分:0)
您不应该使用cell.autoswitch
来决定做什么。更改开关后,您应该更新数据模型,然后重新加载行(或直接更新单元格),此更新应使用数据模型来决定要做什么。
由于细胞重用和正在创建的新细胞实例,使用细胞不起作用。试图使用单元格也是一个糟糕的设计...
答案 1 :(得分:0)
尝试按照以下步骤操作:
在切换操作中,找到被点击的交换机的索引路径。将索引路径存储在实例var中,以便稍后在配置并从“cellForRowAtindexpath”返回单元格时可以比较此索引路径。同时保存开关状态,无论是打开还是关闭。
重新加载将再次为表格单元调用cellForRowAtIndexPath的表
将存储的索引路径(完成第1步)与cellForRowAtIndexpath:方法中的当前索引路径路径进行比较,如果它是同一行&部分,然后将该单元格中的开关状态设置为保存值(在第1步中完成)