0

MonoTouch アプリを作成していて、UISegmentedControl をビューに追加しようとしています (IB を使用せずにプログラムで)。次のエラー メッセージが表示され続けました。

Application windows are expected to have a root view controller at the end of application launch

UISegmentedControl は Window ルート ビュー コントローラーとは関係がないため、これは奇妙です。最後に、コードを変数の初期化まで減らしました。

// This code appears in a class which inherits from UIView
var segmentedControl = new UISegmentedControl ();

このコードを UIViewController から継承するクラスに入れてみましたが、同じ動作が発生しました。AppDelegate に入れてみましたが、それでも同じエラーが表示されました。

注: このコードを実行するときは、iPad デバイスでデバッグしています

遊んだ後、最終的に私が持っているランダムな UIViewController クラスをコメントアウトし、アプリは正常に動作しました。さまざまな UIViewControllers をコメントアウトしようとしましたが、問題なく実行されるたびに、問題と思われるビュー コントローラーは 1 つもありません。持てるView Controllerの数に、ある種の限界に達したかのようです。

これは可能ですか?そうでない場合、何が問題なのですか?

PS これは、ここで提起した以前の問題に関連している可能性があります: UITabBarController を追加する際のエラー

編集

FinishedLaunching メソッド内には、次のコードがあります。

_window = new UIWindow(UIScreen.MainScreen.Bounds);
_window.RootViewController = _navigationController;
_window.MakeKeyAndVisible();

これを iOS バージョン 6.1 で実行しています。

それ以来、UIViewController から継承するクラスだけでなく、任意のクラスをコメントアウトしようとしましたが、アプリは正常に動作します。メモリの問題かも

編集2

これが影響を受けている場所からビューとコントローラーを削除して、それらを再度ビルドし、ビューが UIView から継承されるときにドリルダウンしてみました。UIViewController にそのコードがあり、UIView として使用される (実際には継承しない) クラスがある場合、アプリは問題なく実行されます。UIView からそのクラスを継承するとすぐに、上記のエラー メッセージが表示されます。

4

1 に答える 1

0

そのエラーは とは関係ありませんUISegmentedControl。コードでアプリケーションのルートビューについて言及しているかどうかを確認してください。そうでない場合は、それを行います。

メソッドにFinishedLaunching次を追加します。

if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
{
   window.RootViewController = yourViewController;
}
else
{
   window.AddSubview (yourViewController.View);
}
于 2013-07-22T13:36:21.680 に答える