我是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)
我不确定导致错误的确切原因是100%。正如评论中所讨论的那样,segue是处理视图控制器之间的过渡的一种简单得多的方法,因此,除非您有特别好的理由不使用segues,否则我将开始学习segue(因为无论如何您都在学习新东西)。
但是,该错误可能与此有关:
[self.view addSubview: viewController.view];
执行此操作时,您似乎想做的就是获取视图(可视部分)并将其添加到的视图中ViewController2
。同时,ViewController2
没有为此设置任何控件view
,并且您在其中编写了很多代码viewController
是没有意义的,因为您实际上从未使用该控制器实例化视图。
如果您不打算使用segues,则我上面发布的行应替换为以下内容:
[self presentViewController:viewController animated:YES completion:nil];
在viewController
为您希望传递的数据设置属性为on之后,应调用此方法。
但是,更好的方法是仅使用情节提要连续剧。无论您如何称呼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
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句