点击button导致侧栏上的应用程序崩溃

我有两个视图控制器,一个是主视图,一个是侧面菜单视图; 所有的对象和故事板创build。

在主视图上有一个酒吧button“项目”,点击它时,会调用一个自定义的菜单,从左到右滑出侧边菜单。 到现在为止还挺好。

在侧面菜单上,有一个button可以回到主页视图。 不过,我只需点击button,应用程序就会终止,Xcode不会打印出超时的崩溃日志。

我试图添加一个断点(IBAction)SlideBack:(id)sender ,似乎没有被调用。 所以发生了一系列事情

Xcode中断

 return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

并说 Thread 1: exc_bad_access(code=EXC_i386_GPFLT)

我怀疑自定义segue可能会干扰视图和视图控制器层次结构。 但是找不到。

 home view implementation: @implementation HomeViewController @end side bar implementation: @implementation SideBarController - (IBAction)SlideBack:(id)sender { NSLog(@"sliding back"); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } The custom slide out segue is: @implementation CustomSegue - (void)perform { UIViewController *contentVC = self.sourceViewController; UIViewController *sideBarVC = self.destinationViewController; CGRect sideFrame = sideBarVC.view.frame; [sideBarVC.view setFrame: CGRectMake(-(contentVC.view.frame.size.width), 0, contentVC.view.frame.size.width/2, contentVC.view.frame.size.height)]; CGRect animationFrame = contentVC.view.frame; sideFrame = sideBarVC.view.frame; animationFrame.size.width = contentVC.view.frame.size.width / 2; sideBarVC.view.alpha = 0; [[[contentVC.view superview] window] addSubview:sideBarVC.view]; [UIView animateWithDuration:1 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{ sideBarVC.view.frame = animationFrame; sideBarVC.view.alpha = 1; } completion:^(BOOL finished) { sideBarVC.view.alpha = 1; sideBarVC.view.frame = animationFrame; }]; } 

在这里输入图像说明

寻求帮助后,我发现我误解了segue的逻辑。 [[[contentVC.view superview] window] addSubview:sideBarVC.view]; 是不足够的。

相反,下面的代码应该是正确的:

 [contentVC addChildViewController:sideBarVC]; [[[contentVC.view superview] window] addSubview:sideBarVC.view] [sideBarVC didMoveToParentViewController:contengVC]; 
Interesting Posts