1

私はUIViewController(StoreViewController)を持っています.xibは左側にUITableView、右側に標準UIViewです。StoreTableController という名前の UITableViewController を作成しましたが、どうにかしてそれを StoreView.xib 内のテーブル ビューのコントローラーにしたいと考えています。

残念ながら、nib ファイルのファイル所有者を StoreViewController として保持する必要があります。StoreViewController として設定された StoreTableController 内にデリゲートがあり (これは特定のメソッドを呼び出すためのものです)、StoreViewController 内に StoreTableController のインスタンスがあります。

これまでのところ、StoreViewController 内に UITableView のアウトレットを保持してから、これを実行しようとしました:

[self addChildViewController:self.tableController];

[self.tableController setTableView:self.table];

[self.table setDataSource:self.tableController];
[self.table setDelegate:self.tableController];

ここで、self.table はアウトレットで、self.tableController は StoreTableController のインスタンスです。

ただし、UIViewController コンテインメントの使用方法を完全には理解していないため、これは明らかに正しくありません。

私もこれのバリエーションを試しましたが、実際に何をすべきかわかりません。

ここでは UISplitViewController の使用を避けました。左側のビューが右側のビューよりも大きいだけでなく、さまざまな計画があるため、可能であれば 1 つの .xib ファイルでこれを行う必要があるからです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

まず、.xibUIViewに UIScrollView の代わりに通常のものを入れます。それを「tableContentView」という名前で接続します。IBOutlet

UITableViewController次に、コード内に(または から派生したカスタム クラス)の新しいインスタンスを作成し、次のように tableContentView にUITableViewController追加します。UIView

- (void)viewDidLoad
{
    [super viewDidLoad];

    //  Add tableView
    UITableViewController *someTableViewController = [[UITableViewController alloc] init];
    someTableViewController.view.frame = self.tableContentView.bounds;
    someTableViewController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.tableContentView addSubview:someTableViewController.view];        
}
于 2012-10-29T09:43:33.120 に答える