2011-12-26 7 views
63

Storyboards(タブビューテンプレート)を使用して新しいXcodeプロジェクトを作成しました。私はストーリーボードにいくつかのビューコントローラを追加し、スタティックセルを持つUITableViewを使用したいと考えました。私はそれを作成しましたが、シミュレータを実行するとセルは表示されません。私はこのストーリーボードファイルを除いてプロジェクトで何も変更していません。私はストーリーボードエディタとシミュレータのスクリーンショットを表示しています。ラベルが表示されるので、ビューが正しく読み込まれています。バックグラウンドカラーをグレーに設定して、talbeviewがロードされているのを見ることができます。すべてのセルは可視に設定されています。私は彼らのスタイルをBasicに変更し、ラベルを編集し、開示インジケータを追加しました。それだけです。スタティックセルを含むUITableViewが表示されない

simulator xcode

答えて

34

あなたはTableViewControllerではなく、汎用ビューコントローラを使用して試してみたいのですか?レイWenderlichのウェブサイト上で述べたように

+0

でも、私はスクリーンショットのような大きなビューのサブビューだけであれば、テーブルビューを動作させる方法を理解できません。テーブルビューコントローラーをドラッグして画面全体にすると、それが機能します。しかし、もし私が他のUI要素を混ぜ合わせて一致させたいのであれば、わかりません。私はそれをテーブルビューコントローラに接続する方法を理解できません。 – adum

+2

大きなビューの子であるコンテナビュー内にテーブルビューコントローラを埋め込む場合にのみ、組み合わせてマッチすることができます。 – Andrew

+0

同じ問題がありました。なぜなら、メニューからUINavigationControllerをドラッグすると、テーブルビューの親になるようにUIViewControllerがデフォルト設定されていたからです。なぜデフォルトでAppleによってUITableViewControllerに読み込まれないのですか? > _ < – PostCodeism

101

(この記事では:Beginning Storyboards in iOS 5 Part 2は、「職場でのプレーヤー画面を追加」):静的細胞について

もう一つ、彼らだけ のUITableViewControllerで働いています。ストーリーボードエディタでは、通常のUIViewController内のテーブルビューオブジェクト にそれらを追加できますが、実行時には は動作しません。その理由は、UITableViewController が、 スタティックセルのデータソースの世話をするためにいくつか特別な魔法を提供するからです。 Xcodeでは、このようなプロジェクトをコンパイルすることもできません 「無効な設定:静的テーブルビューは はUITableViewControllerインスタンスに埋め込まれている場合のみ有効です」というエラーメッセージが表示されます。

は同じ問題を持っていたが、これは物事が明確になります...

+1

それで、ストーリーボードのUITableViewControllerにUITableViewを埋め込まずに、ストーリーボードを使用しているUIViewControllerの中にある、UITableViewのスタティックセルを使用する方法はありますか? – Das

+0

Rayの部分で読んだことは、チェックと不正な設定警告のためにこれが防止されていることです。だから、私は私のお金を賭けると確信していません。いいえ。 – EeKay

+0

@KarenAnne ....静的な細胞を使わないでください。動的なUITableViewを使用して、UIViewControllerコンテナをデリゲートにしてから、静的配列を使用して、UITableViewに移入する必要があります。 – Das

192

あなたは、静的テーブルビューを使用する場合は、以下のいずれかの方法を実装しないでください:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
} 
+29

これは、空のメソッドを挿入するだけでなく、実装を一切削除する必要があることを意味します。 – asdf

+0

しかし、実装が不完全であるというXcode警告を取り除く方法を知りましたか? – wcochran

+0

@wcochran私はあなたのインターフェイスでそれらのメソッドを宣言しているかどうか、またはあなたのクラスがUITableViewControllerのサブクラスでないかどうかを確認します。この場合、両方とも「不完全な実装」の警告につながる可能性があります。 –

11

をあなたは追加することができますコンテナそのコンテナにUITableViewControllerを表示して埋め込みます。その後、新しいコントローラー内の静的セルを管理することができます。

+1

うわー!それが理由です!私は、なぜ、以前の開発者がContainerにUITableViewControllerを配置するのかを理解するために、私の頭脳を壊しました! – skywinder

1

私は同じ問題を経験していた、と私のために働いた修正が[[self navigationController] present...]とは、静的テーブルビューが適切にその細胞をロードするには至らなかった古い方法を提示performSegue.を使用して静的のUITableViewControllerのサブクラスを提示しました。

関連する問題