我在textField
的自定义单元格上有一个tableView
。选择其中一个cell
后,我可以使用set selected方法为该特定textField
停用cell
。
(void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if (selected) {
self.accountNameTxtField.enabled = NO;
} else {
self.accountNameTxtField.enabled = YES;
}
}
当选择textField
中的任何一个时,要求禁用其他单元格的cell
。请指导我,谢谢。
答案 0 :(得分:0)
您必须使用实例变量,您可以使用indexPath。
当用户选择任何单元格时,将该实例变量的值设置为选定的indexPath。
并重新加载表。
在cellForRowAtIndexPath
中检查当前indexPath是否被选为indexPath,如果是,则启用textField,否则禁用它。
答案 1 :(得分:0)
在tableview单元格上创建按钮并在tableview上启用或禁用textfield,或者可以在tableview上应用此逻辑didSelectRowAtIndexPath
-(void) btnClick:(id)sender
{
UIButton *btn = (UIButton *)sender;
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:tblView];
NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:buttonPosition];
NSLog(@"table view row is ----%ld",indexPath.row);
if (btn.isSelected == false)
{
[btn setSelected:true];
[selectRow addObject:[NSString stringWithFormat:@"%ld",indexPath.row]];
self.accountNameTxtField.enabled = yes;
//selectRow is NSMutableArray
}
else
{ [btn setSelected:false];
[selectRow removeObject:[NSString stringWithFormat:@"%ld",indexPath.row]];
self.accountNameTxtField.enabled = no;
}
}
[tbleview relaoddata];
if ([selectRow containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]])
{
accountNameTxtField.enabled = yes;
}
else
{
accountNameTxtField.enabled = NO;
}
答案 2 :(得分:0)
使用您的数据执行此操作,您必须拥有包含字典或类对象的数组的数据,我正在演示类对象。
假设你有一个Class对象DataClass
创建一个BOOL属性说textFieldSelected
,现在按照步骤
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
DataClass *object=[self.dataArray objectAtIndex:indexPath.row];
[cell.textField setTag:indexPath.row];
cell.textField.delegate=self;
cell.textField.enabled=object.textFieldSelected;
return cell;
}
现在选择一行
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
for(DataClass *object in self.dataArray){
object.textFieldSelected=NO;
}
DataClass *object=[self.dataArray objectAtIndex:indexPath.row];
object.textFieldSelected=YES;
[tableView reloadData];
}
最初,您可以设置textFieldSelected=YES;
,以便启用所有textField。你可以希望玩对象,它将以这种方式工作。一切顺利。
答案 3 :(得分:0)
最后,我设法找到了整数细胞选择计数的解决方案。
单元格选择计数会在索引路径方法中选择行并在NsuserDefaults中设置该值。
selectedIndex++;
NSString *valueToSave = [NSString stringWithFormat:@"%ld",(long)selectedIndex];
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"SelectedIndexString"];
[[NSUserDefaults standardUserDefaults] synchronize];
在didDeselectRowAtIndexPath方法中,细胞选择计数减少,并在NsuserDefaults中设置该值。
的selectedIndex - ;
在我的自定义表格视图中,textFieldDidBeginEditing方法中的单元格类从NsUserDefaults获取存储值并进行操作。
NSString * SelectedIndexString = [[NSUserDefaults standardUserDefaults] stringForKey:@ “SelectedIndexString”];
NSLog(@"%ld",(long)SelectedIndexString);
NSInteger SelectedIndexCount = [SelectedIndexString integerValue];
if (SelectedIndexCount) {
self.accountNameTxtField.enabled = NO;
}
else{
self.accountNameTxtField.enabled = YES;
}
非常感谢你们。谢谢你的时间。