我在单元格中嵌入了文本字段,我有一个编辑按钮,可以触发单元格进入编辑模式,我可以编辑单元格中的文本。
我需要做的是遍历所有文本字段并将userInteractionEnabled
设置为yes。我在`setEditing:animated method:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
if (editing)
{
int tagNumber = 0;
for (id cellTextField in [tableView visibleCells]) {
UITextField *aField = (UITextField *)[cellTextField viewWithTag:tagNumber];
aField.userInteractionEnabled = YES;
tagNumber++;
}
self.editButtonItem.title = NSLocalizedString(@"Done", @"Done");
}
else
{
self.editButtonItem.title = NSLocalizedString(@"Delete", @"Delete");
}
}
然后我需要以某种方式将所有textFields放回tableview单元格。希望有人可以提供帮助。
干杯。
答案 0 :(得分:0)
您应该将代码放在UITableView的委托方法中,就像这样:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CircleViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
UITextField *aField = (UITextField *)[cell viewWithTag:tagNumber];
aField.userInteractionEnabled = YES;
return cell;
}
在此之后,你应该在编辑按钮的方法中处理编辑和完成。顺便说一下,最好使用一个视图(UIView的子类)和UIBableViewCell的XIB文件。
答案 1 :(得分:0)
当我忘记了整个指针时,意识到我有点愚蠢。
在cellForRowAtIndexPath方法中,我将UITextFields添加到一个数组中(在将它们作为子视图添加到单元格之后)。然后在编辑按钮方法中,我只使用快速枚举循环遍历textFields数组并从那里更改了userInteractionEnabled属性。
以下是创建文本字段的代码:
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *indexPath
{
// Configure the cell...
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
tf = nil;
if (self.currentLevel == 0)
{
// create textfield
tf = [self makeTextField:@"Some text"];
// add to subview
[cell.contentView addSubview:tf];
// Textfield dimensions
tf.frame = CGRectMake(20, 12, 170, 30);
//handle textFieldDidEndEditing
tf.delegate = self;
tf.userInteractionEnabled = NO;
[textFieldArray addObject:tf];
}
}
以下是使其可编辑的代码:
//Edit Button
-(void) editObject:(id)sender
{
if (editButton.title == @"Edit")
{
edit = TRUE;
// make all textFields editable on click
for (UITextField *textF in textFieldArray)
{
textF.userInteractionEnabled = YES;
}
editButton.title = @"Done";
}
else
{
edit = FALSE;
// make all textFields non-editable on click
for (UITextField *textF in textFieldArray)
{
textF.userInteractionEnabled = NO;
}
editButton.title = @"Edit";
}
}