所以我有一个viewControllerA,我想添加另一个由viewControllerB管理的View。只有一个UISlider激活viewControllerB中的简单动作。如果我不触摸此UISlider,它不会崩溃,而一旦使用UISlider,它将崩溃。我正在使用ARC。我在用:

[self.view addSubView: viewControllerB.view];


将viewControllerB添加到viewControllerA。我想念什么吗?谢谢。

好。看起来很简单。我只是添加了一个视图控制器和一个动作。这是github上的演示项目代码:https://github.com/randomor/Demo

我之所以要这样做是因为我有另一个应用程序,可以在现场创建一个视图控制器并将其添加到其他视图中。而且我不想以模态方式进行操作,因为我不希望新的视图控制器覆盖整个屏幕。谢谢。

解决方案:因此,我现在仅使用最新的ViewController包含API:

[self addChildViewController:viewControllerB];


有用!只要我添加了这一行,该事件就会传递到它自己的控制器,并且它不再崩溃。

最佳答案

我建议您使用以下代码

ViewControllerA.h

    #import "ViewControllerB.h"


ViewControllerA.m中(您要推送新控制器的位置)

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


ViewControllerB.m中,您需要

[self.presentingViewController dismissModalViewControllerAnimated:YES];


使它再次消失。

有关一个打开屏幕的多个控制器的说明(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.

10-08 19:52