2

セルにテキストフィールドを埋め込んでおり、セル内のテキストを編集できる編集モードにセルをトリガーする編集ボタンがあります。

私がする必要があるのは、すべてのテキストフィールドをループして、userInteractionEnabledyes に設定することです。`setEditing:animated メソッドでこれを行いました。

- (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 セルに戻す必要があります。誰かが助けてくれることを願っています。

乾杯。

4

2 に答える 2

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";
  }
}
于 2012-10-18T20:40:55.460 に答える
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;
}

この後、編集を処理し、編集ボタンのメソッドで実行する必要があります。ところで、UITableViewCell の XIB ファイルでビュー (UIView のサブクラス) を使用することをお勧めします。

于 2012-09-27T00:50:42.893 に答える