【问题标题】:Crash when instantiating ViewController from Storyboard从 Storyboard 实例化 ViewController 时崩溃
【发布时间】:2012-02-27 09:05:44
【问题描述】:

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

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];
             [self.view addSubview:mvc.view];

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

这是崩溃时的示例:

-(IBAction)showUsername:(id)sender{

    [testLabel setText:@"username"];

}

故事板中的所有内容也都已连接,因此错误链接的连接不应导致问题。

【问题讨论】:

  • 你应该在这里显示你的崩溃日志...
  • 只有一个蓝色的“(gdb)”...

标签: iphone objective-c storyboard


【解决方案1】:

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

MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];

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

[self.view addSubview:mvc.view];

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

@property(nonatomic, strong) MainViewController *controller;

self.controller = mvc;

【讨论】:

  • 是的,谢谢,我又问了这个问题,得到了同样的答案……问题已经解决了,但还是谢谢你。我相信这也会对其他人有所帮助。
  • 爱你
【解决方案2】:

在你显示日志之前我可以想出所有的理由......

【讨论】:

  • 我认为它是否被释放它没有正确实例化......但我不知道如何解决它。我将它分配给我的控制器类,它应该可以正常工作。
  • @user1066899 您可以按 ctrl 并将您的视图控制器从 ib 拖到您的 .h 文件中。那么一切都很好。
【解决方案3】:

在 Product>>Edit Scheme 中打开 NSZombie,您应该会看到更多描述性错误。然后就可以添加了。

【讨论】:

  • 是的,谢谢你工作得很好。现在我终于得到了错误,正如我所假设的,我的 ViewController 被释放-[MainViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x3fa5a60
【解决方案4】:

确保您的方法已正确声明和实施。还要确保您的 .h 中有 IBOutlet UILabel * testLabel。除此之外,我能想到的唯一其他问题是你如何连接它。是不是只有按下按钮才会崩溃?

【讨论】:

    【解决方案5】:

    这一行是错误的,这就是您收到错误的原因。

    MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];
             [self.view addSubview:mvc.view];
    

    用这个替换它

     MainViewController *mvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainController"];
    [self presentModalViewController:mvc animated:YES];
    

    在情节提要中,您不是在添加子视图,而是在做以下三件事之一:呈现模式、将其推送到导航控制器堆栈或制作其中之一。

    【讨论】:

    • addsubview 是为 viewcontrolle 出现时保留的。
    猜你喜欢
    • 2015-12-01
    • 2020-09-22
    • 1970-01-01
    • 2019-12-10
    • 2012-11-17
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多