xcode中未捕获的异常

时间:2013-12-07 20:22:28

标签: objective-c

我是Xcode的新手,因此我将构建小型应用程序。我最近遇到了一个问题,我似乎无法找到。

我已经发了一个发送按钮,它将把我从ViewController2发送给ViewController。

Viewcontroller2.h

@interface ViewController2 : UIViewController {

    ViewController *viewController;
}

- (IBAction)SaveData:(id)sender;

ViewController.m

- (IBAction)SaveData:(id)sender {

    viewController = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
    [self.view addSubview: viewController.view];
}

我已经检查了故事板中的每个连接都是正确的,但我仍然会收到此错误。

libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

1 个答案:

答案 0 :(得分:0)

我不确定究竟是什么导致错误。正如评论中所讨论的,segues是处理视图控制器之间转换的一种更简单的方法,所以除非你有一个特别好的理由不使用segues,否则我会开始学习segues(因为你无论如何都要学习新的东西)。 / p>


然而,错误可能与此有关:

[self.view addSubview: viewController.view];

当你这样做时,你似乎要做的就是拍摄视图(视觉部分)并将其添加到ViewController2的视图中。同时,ViewController2没有为view设置任何控件,并且您在viewController中编写了大量代码,这些代码毫无意义,因为您实际上从未实际使用该实例来实例化视图控制器。

如果您不打算使用segues,我上面的帖子应该替换为以下内容:

[self presentViewController:viewController animated:YES completion:nil];

这应该在viewController为您希望传递的数据设置属性后调用。


然而,更好的是,只使用故事板segues。无论你怎么称呼你的segue,你都会通过覆盖prepareForSegue:sender:方法来传递数据:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([[segue identifier] isEqualToString:@"segueNameHere"]) {
        ViewController* viewController = [segue destinationViewController];
        // now set the properties of viewController
    }
}