18268


タイトル通りなのですが、なかなか良い例文が見つからず困惑しています。  
おそらく

[code]

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    
[/code]

にUItextFieldを生成すればいいのではないかというところまできているのですが、  
なかなか反映されません。  
ご教授のほどお願いいたします


CC BY-SA 3.0
2015-10-31T04:58:38.067
18266
2015-10-31T09:35:49.517
12902
question
ios objective-c
UITableviewcellにUITextFieldを乗っけたい


うまくいかなかったコードだとしても、提示していただくことは、回答する側にとっては意味があります。質問者さんが、どこまでマスターしていて、どこから学習していないのか、推理することができるからです。推理できれば、質問者さんの学習到達度にマッチした回答をすることができます。そうでなければ、あてずっぽうになってしまって、質問者さんにとってみれば、「そんな難しいことを言われても」とか「そんなわかりきったことを、いまさら」というミスマッチになります。  
ともあれ、ここではあてずっぽうの回答をします。

`UITableViewCell`は、`UIView`のサブクラスですが、直接`UITextField`（その他のビュー）を`addSubview`するべきではありません。うまくいかなったのは、それが理由ではないですか？`UITableViewCell`のプロパティ`contentView`に`addSubview`するのが、妥当です。

[UITableViewCell Class
Reference](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/)
\- contentView

> Discussion  
>  The content view of a UITableViewCell object is the default  
>  superview for content displayed by the cell. If you want to customize  
>  cells by simply adding additional views, you should add them to the  
>  content view so they will be positioned appropriately as the cell  
>  transitions into and out of editing mode.
[code]

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"Cell" forIndexPath:indexPath]; // cellのIdentifierは、任意。Storyboard上のPrototype Cellに設定したIdentifierと合わせるのが、いいかもしれません。
    
        UITextField *textField = [[UITextField alloc] initWithFrame: CGRectMake(8.0, 1.0, 120.0, 40.0)];
        textField.borderStyle = UITextBorderStyleRoundedRect;
        [cell.contentView addSubview: textField]; // ここ！
    
        return cell;
    }
    
[/code]

> にUItextFieldを生成すればいいのではないかというところまできているのですが、

セルにテキストフィールドを載せる方法は、ひとつだけではありませんし、それが妥当かどうかは、プロジェクト上における、テーブルビューの位置付けによって、変わってきます。`UITableViewCell`のサブクラスを作って、サブクラスに、テキストフィールドを組み込むほうがいいかもしれません。


CC BY-SA 3.0
2015-10-31T08:05:08.850
18268
2015-10-31T09:35:49.517
2015-10-31T09:35:49.517
7362
7362
18266
answer