0

したがって、viewControllerAがあり、viewControllerBによって管理される別のビューを追加したいと思います。viewControllerBで単純なアクションをアクティブ化するUISliderは1つだけです。このUISliderに触れなくてもクラッシュすることはなく、UISliderを使用するとクラッシュします。ARCを使用しています。使ってます:

[self.view addSubView: viewControllerB.view];

viewControllerBをviewControllerAに追加します。私は何かが足りないのですか?ありがとう。

わかった。それは本当に単純な状況のように見えます。1つのViewControllerと1つのアクションを追加しました。githubのデモプロジェクトコードは次のとおりです:https ://github.com/randomor/Demo

これを機能させたい理由は、その場でView Controllerを作成し、それを別のビューに追加する別のアプリがあるためです。また、新しいView Controllerで画面全体をカバーしたくないので、モーダルで実行したくありません。ありがとう。

解決策:現在、最新のViewController包含APIを使用しています。

[self addChildViewController:viewControllerB];

できます!この行を追加している限り、イベントは独自のコントローラーに渡され、クラッシュが停止します。

4

4 に答える 4

2

次のコードを使用することをお勧めします

ViewControllerA.h

    #import "ViewControllerB.h"

in ViewControllerA.m(新しいコントローラーをプッシュする場所)

ViewControllerB *newController = [[ViewControllerB alloc]init];
[self presentModalViewController:newController animated:YES];

ViewControllerB.mあなたが必要になります

[self.presentingViewController dismissModalViewControllerAnimated:YES];

再び消えるようにします。

開いている 1 つの画面に対する複数のコントローラについて (Apple ViewController プログラミング ガイド):

Each custom view controller object you create is responsible for managing exactly 
one screen’s worth of content. The one-to-one correspondence between a view controller 
and a screen is a very important consideration in the design of your application. 
You should not use multiple custom view controllers to manage different portions 
of the same screen. Similarly, you should not use a single custom view controller 
object to manage multiple screens worth of content.
于 2012-04-06T16:26:12.243 に答える
2

UIViewController をネストすることは避けてください。iOS5 で技術的にサポートされていますが、発生している問題の種類など、多くの理由からお勧めできません (UIViewController へのポインタがぶら下がっているため、クラッシュしています)。

http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

于 2012-04-06T17:35:36.897 に答える
1

この質問は非常にあいまいですが、View Controller Bへの参照を保持していないと思います。そのため、View Bがそれと対話しようとすると、EXC_BAD_ACCESSが発生します。

于 2012-04-06T16:17:09.693 に答える
0

スライダーのターゲットとして設定されているオブジェクトは何ですか? の場合EXC_BAD_ADDRESSは、ターゲットを保持していない可能性があります。ほとんどの場合、スライダーのビュー コントローラーです。

于 2012-04-06T16:17:51.143 に答える