私のアプリでは、カスタムアニメーションを使用しているときに、それぞれ独自のXIBであるビューを切り替えようとしています。すべてのコードを保持するために親ビューとしてベースビューコントローラを作成しましたが、これを動作させることはできません。子ビューコントローラには共通の親ビューコントローラが必要ですか?
私は自分のアプリとインターフェイスビルダーのすべてのビューコントローラ用にIBOutletを作ったので、コンセントを適切なコントローラに接続します。各コントローラは適切なXIBもロードするので、それは問題ではありません。問題は次のビューコードの変更です。
これは私のコードです:
-(void)changeViews {
CGRect frame = self.view.frame;
frame.origin.x = CGRectGetMaxX(frame);
theView4.view.frame = frame;
[self.view addSubview:theView4.view];
[self addChildViewController:theView4];
[self transitionFromViewController:theView1
toViewController:theView4
duration:1
options:UIViewAnimationOptionTransitionNone
animations: ^{
CGRect frame = self.view.frame;
theView4.view.frame = frame;
frame.origin.x -= frame.size.width;
self.view.frame = frame;
}
completion:completion:nil];
そして、これは、コンソールのクラッシュです:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Children view controllers <MyGameViewController: 0x1dd25210> and <Settings: 0x1dd249d0> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]'
誰もがこの問題を解決する方法を知っていますか?
ありがとうございます!
"設定"クラスとは何ですか?どのように定義されていますか? – Stavash
設定クラスは、ヘッダーファイルで宣言されたUIViewControllerで、setteredおよびgetteredであり、Interface BuilderのView Controllerアウトレットに接続されています。 –