Ios 如何使用条件在uitableview中设置复选框?
当我点击btn1Ios 如何使用条件在uitableview中设置复选框?,ios,uitableview,ios7,custom-cell,Ios,Uitableview,Ios7,Custom Cell,当我点击btn1UITableview显示与下图1相同时,我有两个按钮,点击btn2UITableview显示与下图2相同 我正在使用自定义单元格。我已经完成了表重新加载,但它在UITableview中都显示“checkbox” BOOL isChecked; isChecked = true; -(IBAction)btn1:(id)sender { isChecked = true; [self.mytableview reload
UITableview
显示与下图1相同时,我有两个按钮,点击btn2UITableview
显示与下图2相同
我正在使用自定义单元格。我已经完成了表重新加载,但它在UITableview
中都显示“checkbox”
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];
}
}
DemoTableViewCell*单元格;
if(indexPath.row==0)
{
对于(int i=0;i<[self.tableview 1 numberOfSections];i++){
对于(int j=0;j<[self.tableview1行数部分:i];j++){
nsu整数int[2]={i,j};
nsindepath*indepath=[nsindepath indexpathwithindex:ints length:2];
cell=(DemoTableViewCell*)[self.tableview1 cellForRowAtIndexPath:indexPath];
//这是你的密码
UIButton*btn=cell.button;
如果([[btn imageForState:UIControlStateNormal]isEqual:[UIImage ImageName:@“checked.png”]]
{
[btn setImage:[UIImage ImageName:@“unchecked.png”]用于状态:UIControlStateNormal];
//其他声明
}
其他的
{
[btn setImage:[UIImage ImageName:@“checked.png”]用于状态:UIControlStateNormal];
}
}
}
}
其他的
{
cell=(DemoTableViewCell*)[self.tableview1 cellForRowAtIndexPath:indexPath];
UIButton*btn=cell.button;
如果([[btn imageForState:UIControlStateNormal]isEqual:[UIImage ImageName:@“checked.png”]]
{
[btn setImage:[UIImage ImageName:@“unchecked.png”]用于状态:UIControlStateNormal];
//其他声明
}
其他的
{
[btn setImage:[UIImage ImageName:@“checked.png”]用于状态:UIControlStateNormal];
}
}
我的问题是:
1) 全选选项全选已完成的“复选框”,但当我“取消选中”其中任何一项时,“全选”选项也将“取消选中”。
2) 不在图像2中显示“checbox”UITablevieCell
。
3) 当我“取消选中”项目3并再次单击“全选”选项时,取消选中除项目3之外的所有“复选框”,并且项目3已选中。解决方案2)在图像2中不显示“复选框”
您需要创建一个不带复选框的不同原型单元。
然后在cellRowatineXpath
方法中,如果单击按钮2,则使用该单元格
对于其他问题,您需要存储每个复选框的状态(在数组或字典中)。然后在
cellRowatineXpath
方法中,根据该行复选框的状态,勾选或取消勾选该单元格的复选框
1) 将NSMutableArray
放在您的ViewController中,您将在其中存储所有复选框状态(勾选或取消勾选)
2) 在勾选/取消勾选复选框时调用的方法中,在数组中更新1或0,如下所示:
- (void) actionCheckbox {
self.mydata[indexPath.row] = 1; // set 0 or 1
[self.tableview reloadRowsAtIndexPath ...]; // Don't remember exact method name
}
3) 在单元行索引路径中
if(self.mydata[indexPath.row] == 1) {
// tick checkbox for this row
} else {
// untick checkbox for this row
}
我得到了你的第一个解决方案。但是我没有得到另一个解决方案,你能给我任何例子或完美的提示@user427969hi,,我理解你的答案,但给我一个警告或错误@USER427969我收到警告int to id not conversation error。您有完美的解决方案吗?请给我同样的问题:当我按下“全选”复选框时,如何在did select方法中存储所选索引?全部选中;当我取消选中其中任何一个复选框时,全部选中选项不取消选中。或者我再次按下“全选”选项,除“取消选中”选项为“选中”,其他选项为“取消选中”,请为我提供解决方案@user427969抱歉,我无法完成您的工作。我只能指导您正确的方向。在“全选”按钮的操作中,遍历整个self.mydata数组并将所有内容设置为1,对于“全选”按钮的操作,将所有内容设置为0。然后重新加载表格。