2

プログラムでUITableViewControllerを別のView Controllerに埋め込む(サブビューとして追加する)ことは可能ですか? StackOverflow でいくつかの回答を見つけましたが、ARC と iOS6 SDK ではうまくいきませんでした。

Navigation および TabBar コントローラーを使用してこれを簡単に実行できることは知っていますが、通常の View コントローラーにテーブルビューを追加することにもっと興味があります。使用可能な画面スペースの下部を占有するためにテーブルビューが必要です (タブもナビゲーションタイプも適していない他の目的のために残りが必要です)。

しかし、私がそれをやろうとしたとき、それはうまくいきませんでした。サブクラス化された UITableViewController をインスタンス化しましたが、それをサブビューとして self.view に追加すると、コンパイラは「互換性のないポインター型」を使用しようとしたと言いました。それだけでなく、インスタンス化された UITableViewController には .frame プロパティがないため、この演習の要点である寸法を設定できません。

4

2 に答える 2

4

鬼の答えに基づいて、tableViewControllerのビューをサブビューとして追加する必要がありますが、それがすべてではありません。tableViewController は viewController であり、viewController ジョブを正しく実行するには、親と子を認識する必要があります。ここでは詳細はわかりませんが、WWDC 2011 で「Implementing UIViewController Containment」と呼ばれる全体的な話があります。

ビューをサブビューとして追加するだけで発生した問題の 1 つは、ターゲット アクションが機能していないように見えることです。UIButtonまたは同様の操作をタップすると、EXC_BAD_ACCESSまたはのいずれかが発生しますunrecognized selector sent to instance

したがって、次のようにすることをお勧めします。

UIViewController *vc = //Your tableViewController
[self addChildViewController:vc]; //Important
[self.view addSubview:vc.view];

//If you want to set the frame, set the frame of the tableViewController's view
vc.view.frame = ...
于 2012-12-25T18:29:49.143 に答える
1

はい、問題なく別のビューで tableview を使用できます

UITableViewController ですが、それを自分の self.view にサブビューとして追加すると

ビューコントローラーをサブビューまたはそのビューとして追加しようとしていますか? ( viewcontroller.view )

UITableViewController には .frame プロパティがありません。

もちろん、.frame プロパティはありません。これはビュー CONTROLLER です。.view.frame が表示されるはずです。

于 2012-12-25T18:05:31.857 に答える