我正在开发一款应用,我希望通过更改单元格的图像视图来打开/关闭某些设备的状态。我在桌面视图中有我的设备,我在按钮点击时设置表格视图的编辑模式,编辑正常,但问题是它只更改当前可见的单元格的图像,无论是否我之前选择了一些目前看不到的行。这是我的代码。告诉我我缺少什么,或者我应该怎么做才能更改不可见的选定行。
- (void)viewDidLoad{
deviceTableVIew.rowHeight = 72.0;
[deviceTableVIew setAllowsSelectionDuringEditing:YES];
[deviceTableVIew setAllowsMultipleSelectionDuringEditing:YES];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mainBackground.jpg"]];
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]];
[super viewDidLoad];
}
-(IBAction)control:(id)sender{
btnControl.enabled = false;
btnControl.hidden = true;
btnCancel.enabled = true;
btnCancel.hidden = false;
stateToggleToolbar.hidden = false;
[self.deviceTableVIew setEditing:YES animated:YES];
}
-(IBAction)setDevicesOn:(id)sender{
NSArray *paths = [self.deviceTableVIew indexPathsForSelectedRows];
for (NSIndexPath *path in paths) {
UITableViewCell *cell = (UITableViewCell *)[self.deviceTableVIew cellForRowAtIndexPath:path];
cell.imageView.image = [UIImage imageNamed:@"device-on-image.png"];
}
controlStatus = NO;
btnControl.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn-conrol.png"]];
stateToggleToolbar.hidden = true;
}
答案 0 :(得分:2)
表视图不会为每一行维护单元格。滚动时,离开视图的单元格将被回收并用于进入视图的单元格。
每个单元格的“设备开启”状态不应仅存储在单元格的图像中。对于维护该状态的每一行(或状态数组等),您应该有一个模型对象。因此,在cellForRowAtIndexPath:
中,您可以正确设置即将进入视图的单元格。
答案 1 :(得分:1)
(我假设你有一个自定义对象或字典的数组,其中包含填充单元格的信息。)
更好的策略是让你的setDevicesOn:方法更新该数据模型以指示你想要显示的图像,并在完成时调用reloadData。然后,当调用cellForRowAtIndexPath:时,您可以根据该数据元素设置单元格的实际图像。