Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 导航控制器在关闭视图控制器时崩溃_Ios_Objective C_Xcode_Uinavigationcontroller_Autorotate - Fatal编程技术网

Ios 导航控制器在关闭视图控制器时崩溃

Ios 导航控制器在关闭视图控制器时崩溃,ios,objective-c,xcode,uinavigationcontroller,autorotate,Ios,Objective C,Xcode,Uinavigationcontroller,Autorotate,当我的应用程序中发生解雇时,我收到2个错误 警告:在演示或解除过程中,尝试从视图控制器解除 & 开始/结束外观转换的调用不平衡。 我到处搜索,到处都说通常会发生冲突,按钮通过编程和故事板调用转换。一、 但是,当使用导航控制器随附的正常后退按钮时,我收到这些错误。我根本不动按钮 我唯一能链接到错误的是,我的导航控制器在试图关闭视图控制器时自动旋转。如果删除“自动旋转”或将两个视图控制器的方向设置为相同,则不会出现错误。问题是,我需要一个视图控制器是纵向的,另一个是横向的 这就是我设置方向的方式 N

当我的应用程序中发生解雇时,我收到2个错误
警告:在演示或解除过程中,尝试从视图控制器解除
&
开始/结束外观转换的调用不平衡。

我到处搜索,到处都说通常会发生冲突,按钮通过编程和故事板调用转换。一、 但是,当使用导航控制器随附的正常后退按钮时,我收到这些错误。我根本不动按钮

我唯一能链接到错误的是,我的导航控制器在试图关闭视图控制器时自动旋转。如果删除“自动旋转”或将两个视图控制器的方向设置为相同,则不会出现错误。问题是,我需要一个视图控制器是纵向的,另一个是横向的

这就是我设置方向的方式

NavController.m:

- (NSUInteger)supportedInterfaceOrientations {
    return self.topViewController.supportedInterfaceOrientations;
}

- (BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeRight;
}
MainViewController.m:

- (NSUInteger)supportedInterfaceOrientations {
    return self.topViewController.supportedInterfaceOrientations;
}

- (BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeRight;
}
OtherViewController.m:

- (NSUInteger)supportedInterfaceOrientations {
    return self.topViewController.supportedInterfaceOrientations;
}

- (BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeRight;
}
我注意到,由于某种原因,它在转到我的“OtherViewController”时不会自动旋转,但它显然会在返回“MainViewController”时尝试自动旋转,从而导致崩溃

因为它可能是相关的,所以以下是我加载OtherViewController的方式:

[self performSegueWithIdentifier:titles[indexPath.row] sender:nil];
我有一个CollectionViewController,它调用我在故事板中设置的推送序列。Titles是连接到MainViewController的不同segue标题的NSArray

以下是我的应用程序中发生的事情的流程:

MainViewController  : LoadView
MainViewController  : ViewWillAppear
MainViewController  : ViewDidAppear
//This is where I choose to load the OtherViewController
OtherViewController : LoadView
MainViewController  : ViewWillDisappear
OtherViewController : ViewWillAppear
MainViewController  : ViewDidDisappear
OtherViewController : ViewDidAppear
//This is where I select the "Back" button
Warning: Attempt to dismiss from view controller NavController while a presentation or dismiss is in progress!
Unbalanced calls to begin/end appearance transitions for MainViewController.
MainViewController  : ViewWillDisappear
MainViewController  : ViewDidDisappear

对于详细的分析,我们需要更多的代码,尤其是在视图控制器被取消的情况下

关于您的错误消息,无论您使用哪种调用,都会在显示或删除视图控制器的其他工作流中间调用。这可能是在显示或关闭模式视图控制器时,或者在中的导航堆栈上推送或弹出一个模式视图控制器时

  • 负荷视图
  • viewDidLoad
  • 视图将出现
  • 视图显示
  • 视图将消失
  • 看不见
这个列表当然不完整,但这应该是流程中调用的最常见的方法


因此,请与我们分享更多代码

在不涉及太多细节的情况下,您需要找到一种方法一个接一个地进行。棘手的是,没有一个代理告诉您在一个segue之后,
视图
何时被取消。但是,在一个序列之后,当调用
视图时,上一个
视图将被取消。

可能尝试从代码中旋转
视图
,并在
视图中将出现

将此添加到代码中:NSLog(@“%@,[self.navigationController viewControllers]);然后告诉我它打印出了什么。
(MyMain ViewController,OtherViewController)
应该存在的两个视图控制器都在那里。我对您建议的所有内容都添加了注释,似乎我在ViewDidEngage中的日志输出从未被记录。所以我的OtherViewController甚至没有被要求消失。。。VIEW将在我的主VIEW控制器上显示,并且不会调用LoadView,但我确实注意到一些奇怪的情况。收到这两个错误后,MainViewControllers调用ViewWillEnglishe和ViewDidEnglishe..与…没有什么奇怪的。。。而且…确实。。。比因打电话来。这是一个顺序的问题,你可以利用它。我唯一能够强制旋转的方法是通过调整一点来像什么一样工作,但所有这些都是在转到我的OtherViewController时使autorotate工作。当返回到我的MainViewController时,它仍然有相同的崩溃