1

私のアプリケーションでは、ストーリーボードで作成されたいくつかのプロトタイプセルをアプリ全体で再利用するUITableViewContollerのサブクラス(GenericTableViewContollerと呼びます)を作成することをお勧めします。

さて、私がやりたかったのは、SpecialTableViewControllerでのみ使用されるStoryboardで作成された他のいくつかのプロトタイプセルを持つGenericTableViewContollerのサブクラス(たとえばSpecialTableViewController)を作成することでした。

したがって、メインストーリーボードには2つのシーンがあります。1つはGenericTableViewContoller用で、もう1つはSpecialTableViewController用で、それぞれに独自のプロトタイプセルのセットがあります。

私が遭遇している問題は、GenericTableViewContollerシーンで宣言されたセル識別子に対してdequeueReusableCellWithIdentifier:を呼び出すと、SpecialTableViewControllerがnilのプロトタイプセルを取得することです。SpecialTableViewControllerシーンで宣言されたセルは、正常にデキューされます。

これは予想される動作ですか(奇妙な疑いがあります)?他のシーンから実際に登録するには、SpecialTableViewControllerでregisterNib:forCellReuseIdentifier:を呼び出す必要がありますか?これを回避する簡単な方法はありますか?

4

1 に答える 1

0

これは予想される動作ですか (奇妙な疑いがあります)?

ええ、これは予想される動作です。ここでの中心的な概念は、ストーリーボードはクラス デザイナーではなく、オブジェクト インスタンス デザイナーであるということです。たとえば、3 つのシーンを自由に作成できます。それぞれ同じビュー コントローラー クラスを使用しますが、すべて異なるビュー レイアウトを使用します。

異なるテーブル ビュー インスタンス間でプロトタイプ テーブル セル レイアウトを共有する簡単な方法は、それらを独自の XIB に配置し、-registerNib:forCellReuseIdentifier: と手動のセグエを使用すること以外にはありません。

于 2012-06-09T18:56:16.260 に答える