1

かなり標準的なレイアウトを使用して、すべてがストーリーボードにあります。 絵コンテ画像

UISplitViewControllerUINavigationController私のカスタムをロードする詳細ビューコントローラーを使用しますUITableViewControllerviewDidLoadカスタムののみがUITableViewController発火することはありません。

viewWillAppear期待どおりに起動し、他のすべてが完全に機能します。ビューは明らかにロードされています (機能していないのは、で設定した通知だけですviewDidLoad)。コールバックはどこにありますか?

私のviewDidLoadメソッド... viewDidLoadコード ブレークポイント、NSLog... このメソッドが実行された場合、これらがフィードバックを返さないわけがありません。

4

4 に答える 4

5

Split View テンプレートを使用して新しいプロジェクトを作成し、ストーリーボードを再作成してみました。次に、適切なすべてのView Controllerをコピーします。期待どおりに機能しました。(viewDidLoad通常どおり呼び出されます)。

プロジェクト間のすべての IB 接続を並べて比較しました...違いはありません。次に、元のプロジェクトを取得し、すべての接続を 1 つずつ削除してから、それらを再接続しました (接続されていたのとまったく同じものに)。完了したら、コードを実行すると、すべてが機能しました。viewDidLoad呼ばれた。

何も変わらないはずだったので、動作していないストーリーボードのバージョンと動作しているストーリーボードの違いを試してみましたが、明らかに何かが違いました。XML の大部分は同一でしたが、多くのビットは XML ファイルの異なる部分であり、標準の diff は非現実的でした。それは、ビットが互いに一致する場所を見つけようとするジグソーパズルのようなもので、何も見つからない1時間後にあきらめました.

恐ろしく不満足な答えです。それはIB関連であり、おそらくアウトレットでした(ただし、クラス名なども再入力しました..再び同じです)。ほとんどの場合、それは私のエラーであり、Xcode のエラーではありませんでしたが、正確な理由を特定できるようには見えません。

提案をありがとう、彼らは私が解決策につながるさまざまな方向を見るのを助けました.

于 2013-03-18T14:03:45.373 に答える
1

viewDidLoadすでにロードされ、おそらくマスタービューコントローラから更新されたときに呼び出されることを期待していると思います。この場合、nib / storyboardからリロードする必要viewDidLoadがないため、呼び出されません。

ログステートメントをに入れるviewDidLoadと、少なくとも1回は呼び出されていることがわかります。

于 2013-03-15T08:37:04.690 に答える
1

プロジェクトの作成後に Storyboard ファイルを作成した可能性があります。その場合、AppDelegate.m ファイルから文字列を削除する必要があります。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] 境界]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

于 2014-02-07T12:12:11.790 に答える
1

ビュー コントローラ サブクラスの名前が別のクラスと衝突していないことを確認してください。

私の場合、自動生成されたプロジェクト クラス プレフィックス「MP」をぼんやりと保持していたため、プロジェクトのルート ビュー コントローラー サブクラスは MPViewController でした。

MPViewController はどこにも文書化されていませんが、MediaPlayer フレームワークにリンクするときにのみ問題が発生したため、おそらくどこかで定義されており、ストーリーボードが読み込まれたときにアプリがカスタム クラスのインスタンスではなくそのインスタンスを作成したことは間違いありません。

于 2013-04-20T20:18:42.330 に答える