2012-02-23 9 views
0

コードでテーブルビューを実装するのは、ほとんどの場合です。私は単純なテーブルビュークラスを作成しましたが、この部分ではInterfaceBuilderを使用しませんでした。私はメソッドを使用しようとしました: heightForRowAtIndexPath 私はクラスに最初の行の高さのサイズ(セクション0)を100に変更し、残りはself.rowHeightを返します。 私はまた、私のテーブルビューをモーダルダイアログに表示するためにtableviewcontroller(tableViewControllerのサブクラス)を作成しました。私はそれをモーダルダイアログに表示しようとしましたが、モーダルダイアログに表示されたとき、最初のセクションの行の高さのサイズは100ではありません。実際には他の行と同じサイズです。 私のアプリケーションの別のビュー(モーダルダイアログではなく)に同じテーブルビューを追加すると、最初の行の高さが100と表示されますメソッドheightForRowAtIndexPath?モーダルダイアログのUITableViewとheightForRowAtIndexPath

おかげで、 カムラン

+0

私はモーダルビューで同じことをやっただけでうまくいきました。あなたの質問について私が奇妙に感じたことの1つは、self.rowHeightでしたか?デリゲートクラスにrowHeightというプロパティがありますか?なぜなら、私はそれがtableView.rowHeightであると考えられるからです。おそらく、あなたはheightForRowAtIndexPathの実装のためのコードを共有することができますか? – dbrajkovic

+0

OK "heightForRowAtIndexPath"をコントローラクラスにコピーしても問題ありません。コントローラーは正しい高さを確認するためにこれらのメソッドをオーバーライドする必要がありますか?または私は何か間違っている?私のTableViewクラスにはこれらのメソッドが含まれていますが、私はそれらをUITableViewControllerですべて必要なものを正しく取得する必要がありますか? – Cam

+0

以下の回答は – dbrajkovic

答えて

1

あなたがのUITableViewのサブクラスを作成したようですね。だから私はずっと前に学んだルールがあります。 UITableViewまたはNSTableViewをサブクラス化する場合、おそらく何か間違っているでしょう。ここには魔法はありません。 UITableViewControllerは自動的にそのテーブルビューのデリゲートとデータソースに設定されます。そしてheightForRowAtIndexPathはデリゲートメソッドです。したがって、デリゲートクラスに属します。デリゲートメソッドに関するUITableViewとObjective-Cプログラミングのドキュメントを読んでください。また、http://dbrajkovic.wordpress.com/2011/03/10/delegate-methods-there-is-no-magic-cappuccino-cocoa/

デリゲートとデータソースメソッドのポイントは、サブクラス化せずにテーブルビューのほとんどのカスタマイズを達成することです。 delegate = selfとdatasource = selfを設定している場合、間違っていることは間違いありません。たとえあなたがUITableViewをサブクラス化したとしても、tableviewのデリゲートとデータソースは自己であってはいけません。

+0

です。つまり、私のビューをUITableViewからサブクラス化する必要はありません。ビューをどのようにして作成し、それをUItableViewControllerに割り当てるか私は本当に混乱しています.. IBを使用しないビューを作るためのサンプルコードが見つかりませんでした。 – Cam

+0

まず、ビューのサブクラスを作成してビューのインスタンスを作成する必要はありません。 'UITableView * tv = [[UITableView alloc] initWithFrame:CGRectMakeZero];'はあなたのためにテーブルビューを作成します。しかし、UITableViewControllerドキュメントを読むと、 'initWithStyle:'を使ってUITableViewControllerを作成したときに表示されます。テーブルビューコントローラに関連付けられたペン先がない場合は、テーブルビューが作成されます – dbrajkovic

+0

UITableViewControllerをサブクラス化する必要があります。たとえば、 'OLFeedbackViewController * vc = [[OLFeedbackViewController alloc] initWithStyle:UITableViewStyleGrouped];はグループ化されたスタイルのテーブルビューを作成するために必要な作業です。この場合、OLFeedbackViewControllerはUITableViewControllerのサブクラスです。 – dbrajkovic

関連する問題