当我点击btn1 UITableview
时,我有两个按钮,显示与图像1相同,我点击btn2 UIableView
显示与下图2相同
我正在使用自定义单元格。我已经完成了表重新加载,但它在UITableview
中都显示了“复选框”。
BOOL isChecked;
isChecked = true;
-(IBAction)btn1:(id)sender
{
isChecked = true;
[self.mytableview reload];
}
-(IBAction)btn2:(id)sender
{
isChecked = false;
[self.mytableview reload];
}
cellRowAtIndexPath
方法:
if(isChecked)
{
customcell.trLabel.text = [arr1 objectAtIndex : indexpath.row]
[customcell.button setImage:[UIImage imageNamed:@"checked.png"] forState:UIstateselected];
[customcell.button setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIstateNormal];
[customcell.button addTarget:self action:@selector(checkButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
}
else
{
customcell.trLabel.text = [arr2 objectAtIndex : indexpath.row]
[customcell.buttton = NULL;
}
不同的方法
-(void)checkButtonTapped:(id)sender
{
sender.selected = !sender.selected;
}
图片1
图片2
我已经完成了全部选择。
didSelect
方法:
DemoTableViewCell *cell;
if(indexPath.row == 0)
{
for (int i = 0; i < [self.tableview1 numberOfSections]; i++) {
for (int j = 0; j < [self.tableview1 numberOfRowsInSection:i]; j++) {
NSUInteger ints[2] = {i,j};
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:ints length:2];
cell = (DemoTableViewCell *)[self.tableview1 cellForRowAtIndexPath:indexPath];
//Here is your code
UIButton *btn = cell.button;
if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"checked.png"]])
{
[btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
// other statements
}
else
{
[btn setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
}
}
}
else
{
cell = (DemoTableViewCell *)[self.tableview1 cellForRowAtIndexPath:indexPath];
UIButton *btn = cell.button;
if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"checked.png"]])
{
[btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
// other statements
}
else
{
[btn setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
}
我的问题是:
1)选择所有选项选择所有已完成的“复选框”,但当我“取消选中”任何项目时,选择所有选项也是“取消选中”。
2)不在图像2 UITablevieCell
中显示“checbox”。
3)当我“取消选中”item3并再次点击时,选择所有选项取消选中除“item3”和“item3”之外的所有“复选框”。
答案 0 :(得分:0)
解决方案2)在图像2 UITablevieCell
中不显示“checbox”您需要创建一个不带复选框的不同原型单元格。
然后在cellRowAtIndexPath
方法中,如果单击按钮2,则使用该单元格
对于其他问题,您需要存储每个复选框的状态(在数组或字典中)。然后在cellRowAtIndexPath
方法中,取决于该行中复选框的状态,勾选或取消选中单元格的复选框
1)在ViewController中有NSMutableArray
,您可以在其中存储所有复选框状态(勾选或未勾选)。
2)在勾选/取消勾选复选框时调用的方法中,更新数组中的1或0,如:
- (void) actionCheckbox {
self.mydata[indexPath.row] = 1; // set 0 or 1
[self.tableview reloadRowsAtIndexPath ...]; // Don't remember exact method name
}
3)在cellRowAtIndexPath
,
if(self.mydata[indexPath.row] == 1) {
// tick checkbox for this row
} else {
// untick checkbox for this row
}