テキスト入力可能なUITableViewCell

UITableViewのセルにテキストを追加できるようにするには、UITableViewCellを継承したクラスを作り、layoutSubviewsメソッドをオーバーライドしてあげればできました(* デバイスの回転に対応しない場合はサブクラスを作らないでもいいし、tmTxtも作らなくていいです)。下記にコードをメモしておきます。(* ただし、テストはあまりしていません)

```
--- TextCell.h ---

@interface TextCell : UITableViewCell {
UITextField *_textField;
}

@property (nonatomic, retain) UITextField *textField;

<ul>
<li>(void)done:(id)sender;</li>
</ul>

--- TextCell.m ---
- (void)layoutSubviews {
[super layoutSubviews];

<pre><code>// 回転の際はtextFieldの値を一旦クリアしないと横の位置がずれるため、
// 一時的にtextFieldの値を保管しておく変数を定義する。
NSString *tmpTxt = nil;

if (self.textField != nil) {
// textFieldに入力があれば、その値を取っておく。
tmpTxt = self.textField.text;
// 一旦nilにしないと回転の時に横の位置がずれる。
self.textField.text = nil;
}

// textFieldを作り、中央揃えやクリアボタンなどの設定を行う。
UITextField *textField = [[UITextField alloc] initWithFrame:self.contentView.frame];
textField.borderStyle = UITextBorderStyleNone;
textField.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]];
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
textField.textAlignment = UITextAlignmentCenter;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.adjustsFontSizeToFitWidth = YES;

// 入力終了時の処理を設定する。
[textField addTarget:self action:@selector(done:) forControlEvents:UIControlEventEditingDidEndOnExit];

// 一時的に保管しておいた値をtextFieldに設定する。
textField.text = tmpTxt;

// セルのサブビューとして追加する。
[self addSubview:textField];

self.textField = textField;
[textField release];
</code></pre>

}```

この記事が役に立った場合、シェアしていただけると励みになります!!