UITableView
(ではなく、Table View Controller
別のビュー内のTableView )を追加し、そのコンテンツを"Dynamic Prototype"
に設定する方法はありXIB file
ますか?
UITableView
これは、 内のビュー コントローラにを追加するときに正常に機能しstoryboard
ます。ただし、XIB ファイルで同じことを実行しようとすると、その内容を に設定できません"Dynamic Prototype"
。
UITableView
(ではなく、Table View Controller
別のビュー内のTableView )を追加し、そのコンテンツを"Dynamic Prototype"
に設定する方法はありXIB file
ますか?
UITableView
これは、 内のビュー コントローラにを追加するときに正常に機能しstoryboard
ます。ただし、XIB ファイルで同じことを実行しようとすると、その内容を に設定できません"Dynamic Prototype"
。
アップデート
最近これについて考えてみると、この問題に対するかなり単純な解決策があります。それは、コンテナー ビュー パターンを使用することです。
uitableviewcontroller
をIBキャンバスにドラッグします。uitableviewcontroller
、使用可能なセグエ タイプから [埋め込み] を選択します。 uitableviewcontroller
別のストーリーボード/xib にリファクタリングします。注- テーブル ビュー コントローラーは、コンテナー ビューをコードで保持するビュー コントローラーの子ビュー コントローラーとしてアクセスできます。
なぜこれが正しいパターンなのですか?1 絵コンテ、1 コントローラー。TableView は、別個のコントローラーを保証するのに十分なほど複雑であるため、独自のコントローラーを持っています。コンテナー ビュー パターンを使用すると、単一の責任パターンを維持できます。コントローラーの肥大化を防ぎます。
元の回答の回避策
テーブルビューのサイズを変更すると、落とし穴に注意してください。xml は Xcode によって再生成され、属性を再度追加する必要があります。この編集がバージョン 9.3 以降でも機能することを確認しました。サンプル スタブはhttps://github.com/mingsai/test-stub-tableviewdynamic-inxib.gitで入手できます。
元の回答
tableview
タグ内で style 属性を見つけますdataMode="prototypes"
これについて 100% 確信があるわけではありませんが、XIB ファイルで UITableView コンテンツを「動的プロトタイプ」に設定する方法はないと思います。
ただし、UITableViewCellのみを含む「MyTableViewCell.xib」などと呼ばれる別のXIBファイルを作成し、セルに識別子を与え、ファイルの所有者に移動し、IDインスペクターで同じView Controllerに設定することで、同じ機能を実現できますクラスをテーブル ビュー xib として作成し、次のようにビュー コントローラーで IBOutlet を作成します。
@property (nonatomic, assign) IBOutlet UITableViewCell *customCell;
次に、XIB でファイルの所有者をクリックし、コントロールを押しながら uitableviewcell にドラッグし、セルのアウトレットを「customCell」プロパティに設定します。
(グラフィック エディターの左下隅にある円の中にある再生ボタンのようなボタンを見つけてクリックし、その列でドラッグすると、これははるかに簡単に実行できます)。
結局のところ、cellForRowAtIndexPath で次のようなコードを使用します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
cell = customCell;
}
// Other cell configurations....
}
それが理にかなっていて、あなたのニーズに合っていることを願っています!