- ベストアンサー
Xcodeでカスタムセルを実装できない
- ObjectiveCを用いてiPhoneアプリ開発の勉強をしています。カスタムセルを実装するために参考にしたサイトの方法がうまくいきません。
- シミュレータが起動できないエラーが出ています。Storyboardでのセルの設定や接続がうまくいっていない可能性があります。
- コードやファイルの内容も共有しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 http://qiita.com/yimajo/items/81a1331fea2592821061 に書かれてある方法の方が、元の質問のURLの方法より 優れたよい方法だと思います。 ただ、この方法で利用するxibファイルは > File's OwnerのviewとUITableViewCellを接続する の接続を削除しなければなりません。 今回の参考にしたサイトは、そのあたりのxibファイルの 作成方法が詳しく書かれてないので初心者には難しいかも しれません。(元のURLの方法よりは細かい設定が不要なので簡単ですが) 別にxibファイルにこだわってないんだったら Storyboardにカスタムセルを定義する方がやりやすいと思います。 http://development.hatenadiary.com/entry/20131228/1388218348 とかがシンプルに説明されていて参考になると思います。
その他の回答 (1)
- Lchan0211b
- ベストアンサー率61% (573/930)
質問を読んで気付いた点をコメントします。 > まずSingleViewControllerを選択し、UITableViewとTableViewCellをstoryboardのViewController上にドラッグアンドドロップし、UITableViewとViewControllerの実行ファイルをOutlet接続しました。 別途xibファイルでセルを定義するつもりなのだから、storyboardの中にUITableViewCellを 入れる必要はないと思います。というか、これを入れると混乱してしまうと思うので、 削除して、UITableViewの中には何もないようにした方がよいと思います。 現在は、このstoryboardで定義したセルが表示されているのかもしれません。 > なので、storyboardのセルを選択し、Identifier inspector を開き、CustmCellをtestCellに、IdentityをCellにしたらシミュレータが起動できましたが、何も項目は表示されませんでした。 storyboardのセルは使わないのだから削除してください。 そして、storyboardのセルではなくて、xibファイルのセルの設定を確認してください。 ここで設定するのは ・Identity inspectorのCustom Classを「testCell」にする。 ・Attributes InspectorのIdentifierを「Cell」にする。 です。(Identifier inspectorのIdentityではありません。) この設定個所は参考URLでも画面で解説されているのでよく見てください。 続いて、そのURLで解説されている通り ・File's OwnerをUIViewControllerにする(ViewControllerではありませんUIViewControllerです。) ・File's OwnerのviewとUITableViewCellを接続する ・_IBOutletのラベルと紐付けする。 の3つをきっちり設定する必要があります。 何も表示されないのは、この辺りが正しく設定されてない可能性も考えられます。 > カスタムセルのサイズを縦に極端に大きくしても変化が無かったのでうまく接続できていないように思います。 セルのサイズを変更するには、xibのセルサイズを変えるだけではダメで、 参考URLの最後のコードに書かれているheightForRowAtIndexPathを定義する 必要があります。これを書いておけばxibのセルサイズの変更が反映されます。
お礼
回答ありがとうございます! セルの無いUITableViewや、identifierなども正しく設定したものを新たに作り直しました。 それで実行したところ、main.mの最後の行でSIGABRTのエラーが出てしまいました。 最初、 self.tableView.dataSource = self; self.tableView.delegate = self; を書き忘れて実行した時はシミュレータが起動したのですが、これをViewControllerのViewDidLoadに書き加えるとSIGABRTのエラーが出ました。 そこで、このサイトを参考にして http://qiita.com/yimajo/items/81a1331fea2592821061 [self.tableView registerClass:[test class] forCellReuseIdentifier: @"Cell"]; を self.tableView.dataSource = self; self.tableView.delegate = self; の後に追加したところ、シミュレータが起動しました。 ラベルの表示はまだ一度も出来ておらず、白紙のテーブルが表示されるだけでした。 最終的にはラベルやボタン、画像などをセルに表示できればいいなと思っているので、xibに拘る必要はないのですが、 XIB以外でセルを自由にカスタマイズする方法はあるでしょうか?あまりに難しいようであれば、そちらを試してみたいです。 試しにTableViewの上に乗せたセルにラベルを乗せてみましたが、うまく行きませんでした。
お礼
回答ありがとうございます! 教えていただいたサイトを参考に、xibを使わずにですがセルを自分の好みにレイアウトする事が出来ました。 現状の用途としてはこれで十分でやり方も簡単なので、この先この方法を使っていき、xibが必要な場面というのがどういう時なのか考えてみたいと思います。