在我的ios应用程序中,我在- (void)viewDidLoad {
[super viewDidLoad];
checkBoxesArray = [[NSMutableArray alloc]init];
for(int i = 0; i <15; i++){
[checkBoxesArray addObject:@""];
}
}
//TableList Delegate Methods:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return checkBoxesArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"HistoryCell";
UITableViewCell *cell = (UITableViewCell *)[MaintableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
model1 = mainArray[indexPath.row];
cell.textLabel.text = model1.Name;
cell.detailTextLabel.text = model1.MasterId;
bool variable = checkBoxesArray[indexPath.row];
newBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[newBtn setFrame:CGRectMake(250,5,30,30)];
[newBtn addTarget:self action:@selector(urSelector:) forControlEvents:UIControlEventTouchUpInside];
UIImage *btnImage;
if(variable == YES){
NSLog(@"1");
btnImage = [UIImage imageNamed:@"check.png"];
}else{
NSLog(@"2");
btnImage = [UIImage imageNamed:@"uncheck.png"];
}
[newBtn setImage:btnImage forState:UIControlStateNormal];
[cell addSubview:newBtn];
return cell;
}
-(void)urSelector :(UIButton*)sender{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:MaintableView];
NSIndexPath *indexPath1 = [MaintableView indexPathForRowAtPoint:buttonPosition];
NSInteger variable = indexPath1.row;
bool variablePosition = checkBoxesArray[variable];
if (variablePosition == YES){
variablePosition= NO;
[checkBoxesArray replaceObjectAtIndex:variable withObject:[NSString stringWithFormat:@"%d",variablePosition]];
}
else{
variablePosition = YES;
[checkBoxesArray replaceObjectAtIndex:variable withObject:[NSString stringWithFormat:@"%d",variablePosition]];
}
[MaintableView reloadData];
}
@end
中添加了一个按钮,用于检查和取消检查TableViewCell产品。为此我写了下面的代码,但根据我的代码默认情况下都检查了所有内容,当我滚动复选框时取消选中
SEL originalSelector = @selector(originalMethod);
SEL swizzledSelector = @selector(newMethod);
答案 0 :(得分:1)
1)在模型数组中添加一个key
。与isSelected
类似,并将其值设置为NO
。
2)现在当您选择任何单元格时,将该键的值设置为YES
。
3)在cellForRow
中,访问我们添加的密钥并检查其值。如果是,则设置检查图像否则取消选中图像。
4)不要维护两个数组,因此请删除checkboxarray
。这会给你造成困惑。
答案 1 :(得分:0)
首先请替换cellForRowAtIndexPath中的代码行
bool variable = checkBoxesArray[indexPath.row];
与
bool variable = [checkBoxesArray[indexPath.row] length] > 0;
因为在checkBoxesArray中,有NSString类型的对象。并将它们存储到bool变量中。它总是为您的'变量'返回一个真值。首先,你需要有一个适当的条件来'检查'和'取消选中'的东西。我假设你想要第一次取消选中所有的盒子。所以我把空字符串用于取消选中按钮和一些值字符串用于检查按钮。 您需要在urSelctor方法
中替换您的代码bool variablePosition = checkBoxesArray[variable];
if (variablePosition == YES){
variablePosition= NO;
[checkBoxesArray replaceObjectAtIndex:variable withObject:[NSString stringWithFormat:@"%d",variablePosition]];
}
与
bool variablePosition = [checkBoxesArray[variable] length] > 0;
if (variablePosition == YES){
variablePosition= NO;
[checkBoxesArray replaceObjectAtIndex:variable withObject:@""];
}
希望这些事能对你有帮助。
快乐编码...... :) :) :))