从Storyboard实例化ViewController时崩溃

the*_*tic 6 iphone objective-c storyboard

我的故事板中有一个视图,我通过执行以下操作添加到当前视图中:

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];
             [self.view addSubview:mvc.view];
Run Code Online (Sandbox Code Playgroud)

故事板

视图出现,但我出现后所做的一切都会导致崩溃.我究竟做错了什么 ?

这是一个崩溃的例子:

-(IBAction)showUsername:(id)sender{

    [testLabel setText:@"username"];

}
Run Code Online (Sandbox Code Playgroud)

一切都在故事板中连接起来,因此错误链接的连接不应该导致问题.

Jor*_*ers 8

您实例化一个新的视图控制器:

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];
Run Code Online (Sandbox Code Playgroud)

但你不保留它.只要您将视图层次结构添加到另一个视图中,您的视图层次结构

[self.view addSubview:mvc.view];
Run Code Online (Sandbox Code Playgroud)

因此,当单击一个按钮时,会向您发送一条消息IBAction,但您的视图控制器已经被释放.要防止这种情况发生,请保留您的mvc变量,例如属性中的某个位置.

@property(nonatomic, strong) MainViewController *controller;

self.controller = mvc;
Run Code Online (Sandbox Code Playgroud)