我在一个块中初始化一个SubViewController。我将视图控制器的视图作为子视图添加到MainViewcontroller中。我的SubViewController中有一些按钮逻辑。
现在发生的事情是,当我按下子视图中的按钮时,由于SubViewController已经发布,应用程序崩溃了。

恐怕这是一个主要的设计问题-但目前我不知道如何避免这种情况。

这是我的block语句中初始化的样子

__strong AAFBPostView *newPost = [[AAFBPostView alloc]init];
newPost.view.frame = CGRectMake(0, 300, 320, 88);
[self.view addSubview:newPost.view];
[newPost setData:result]; //passing some data to the view

最佳答案

您应该将API用于容器视图控制器。 UIViewController的文档中都介绍了这些内容。

代码的问题是,一旦AAFBPostView变量超出范围,就没有对newPost视图控制器的强大引用。顺便说一句-您的视图控制器的类名称应为AAFBPostViewController。当前名称暗示它是一个视图,而不是视图控制器。

通过使用容器API,父视图控制器保留对子视图控制器的引用,因此问题得以解决。

可以在“适用于iOS的View Controller编程指南”的Creating Custom Content View Controllers部分中找到详细信息。

09-27 13:05