继续收到“非平衡调用开始/结束<ViewController>的外观转换”错误
我有一个几乎完美运行的应用程序。 这里是我的应用程序的结构:
故事板上共有6个View Controller。 前三个视图控制器是最重要的。 最初的视图控制器有“login”和“注册”button。 “login”button模式地呈现login视图控制器,“注册”button模式地呈现注册视图控制器。
注册视图控制器有3个字段用于用户名,密码和电子邮件,然后是“提交”button。 提交button提交数据到我的networking服务器,如果一切提交成功,它自己调用“performSegueWithIdentifier”方法。
这是声明:
[self performSegueWithIdentifier:@"superSegue" sender:self];
今晚我花了2个小时试图让上面的方法调用工作,它终于工作。 为了使它工作,我不得不在故事板上select我的注册视图控制器,并转到编辑器>embedded>导航控制器(如果我没有记错,我不得不这样做,因为注册视图控制器模态地提出)。 然后,我从注册视图控制器的提交button拖到我要推送的视图控制器,然后select“推送”,然后键入标识符名称。
无论如何,上述所有的工作完全正常,直到我尝试使用我们推向使用方法调用的视图控制器上的后退button。 如果我点击后退button,它会进入一个90%的黑色屏幕,在顶部有一个空白的导航栏,并带有一个后退button,当然后退button也不起作用。
这是我在控制台中得到的错误:
Unbalanced calls to begin/end appearance transitions for <VerificationViewController: 0x14ed1bb0>
validation视图控制器是注册视图控制器通过performSegueWithIdentifier方法推送到的视图控制器。
有谁知道我可以修复这个错误?
我在下面的屏幕截图中包含了我的故事板在xcode中的样子。 有一个视图控制器,我已经编码,但尚未连接,不应该有所作为,所以你可以忽略loginVC右侧的视图控制器。
我今天上午在另一个stackoverflow问题中find了答案。 答案可以在这里find。
当我最初设置Push Segue时,我点击并从一个button中拖动,并在该button的IBAction方法实现中调用performSegueWIthIdentifier方法。 这导致button按下时执行2个相同的推入段。 我只是把我的方法调用放在IBAction中,删除了旧的push segue,并且创build了一个新的push segue,只是这次我从整个View Controller中点击并拖动,而不是button。
我通过在这里包装解决了这个问题。
dispatch_async(dispatch_get_main_queue()) { //call your performSegueWithIdentifier in here }
在我的情况下,它是UITabBarController
一个子类,带有一个重载的setSelectedIndex:
方法,它用animation进行转换。 我发现在animation开始之前需要调用以下内容:
[sourceVC viewWillDisappear:YES]; [destinationVC viewWillAppear:YES];
以下在完成块:
if (finished) { [sourceVC viewDidDisappear:YES]; [destinationVC viewDidAppear:YES]; [super setSelectedIndex:selectedIndex]; }
如果在animation结束之前发生多个selectedIndex更改,则问题仍然可能发生。
在我的情况下,这个警告是由显示模态视图时调用UINavigationController的popToRootViewController
造成的。 当我模式视图解除后,移动popToRootViewController
,警告停止出现。
错误原因 :如果您从当前视图控制器的viewWillAppear,loadView,init或viewDidLoad方法中推送/呈现另一个View控制器,则会显示此消息
解决scheme :将推送/呈现代码移至viewDidAppear方法将解决问题
原因是:在viewDidLoad中并不是所有的花哨animation都已经完成了,而viewDidAppear一切都完成了。
我的工作,这对我很好错误原因:此消息显示,如果你推/提出另一个视图控制器从TabBarController,解决scheme:请设置viewController.modalPresentationStyle = .overCurrentContext
,然后呈现viewController
topViewController.present(vc, animated: true, completion: nil)
- 当我删除objective-c中的特定组时,如何从主AddressBook中删除联系人?
- 你怎么能让一个uilabel环绕图像(如图所示)
- – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath没有被调用
- 在Swift中的一个地方导入整个项目的框架?
- 为什么UIViewController touchesBegan,touchesMoved&touchesEnded只有在两个触摸的第一个开始,移动或结束时被调用?
- 截断在单词或字符边界处包含表情符号或unicode字符的string
- 使UIView的特定angular落圆
- CALayer和视图消失
- 重用细胞… :(