Ios 带模态分段的旋转碰撞
我将视图控制器1、2和3链接成这样,2和3显示模态分段: 当用户处于横向模式一段时间后,展开到父视图,然后将手机旋转回纵向时,应用程序会崩溃,并出现以下符号化的崩溃报告: 3个展开到2个: 由于未捕获的异常而终止应用程序 “NSInvalidArgumentException”,原因:“-[nsConcreteMatableData rotatesOnDeviceRotation]:发送到实例的无法识别的选择器 0x19360600' 2展开到1: 应用程序因信号SIGSEGV而崩溃 我从Appsee获得这些报告,因为该应用现在处于测试阶段,而且我似乎无法在自己的设备上重新创建错误,所以我依赖于在更新之前知道错误是什么 似乎应用程序忘记了它所在的视图,也不知道旋转到什么位置。如果您有任何想法或曾经经历过类似的事情,我将不胜感激 更新1: v2/ShinobiCharts.framework/Headers/SChartBandSeries.h:42:57:Attribute 属性“orientation”的“readonly”限制属性“readwrite” 从“SChartSeries”继承的属性的Ios 带模态分段的旋转碰撞,ios,swift,rotation,modalviewcontroller,uideviceorientation,Ios,Swift,Rotation,Modalviewcontroller,Uideviceorientation,我将视图控制器1、2和3链接成这样,2和3显示模态分段: 当用户处于横向模式一段时间后,展开到父视图,然后将手机旋转回纵向时,应用程序会崩溃,并出现以下符号化的崩溃报告: 3个展开到2个: 由于未捕获的异常而终止应用程序 “NSInvalidArgumentException”,原因:“-[nsConcreteMatableData rotatesOnDeviceRotation]:发送到实例的无法识别的选择器 0x19360600' 2展开到1: 应用程序因信号SIGSEGV而崩溃 我从App
如果视图层次结构如此简单,那么您最好只使用推送序列导航,然后松开。在没有看到代码的情况下,必须假设对第二个控制器的引用丢失,因此在尝试旋转它时旋转崩溃,尽管我没有经历过这种情况 或者只是简单地弹出一个或两个视图
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
// Or to pop back 2
self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
更新:
您的问题与ShonobiControl有关。
我们最近修复了一个问题,该问题与解除分配后发送给SChartCanvas的消息有关,看起来与上述问题非常类似。
如果您看到此问题,那么ShinobiCharts 2.7.3.hotfix2版本可能值得一试。这可从我们的门户网站下载。
我希望这能解决您一直看到的问题,但如果问题仍然存在,请不要犹豫与我们联系!:-
谢谢
Ryan所以你有一个模态视图,它表示一个模态视图,它表示一个模态视图?当popdismissViewControllerAnimated的设计目标是从3放松到2时,我看不出有什么理由。展开通常是在导航堆栈中向后导航。@dco不,仅以模式显示2和3。视图1是初始视图控制器。是否有理由不使用推送?这正是它设计的初衷。在这里,我能想到的唯一一件事是,在通过两个模态展开后,对第二个控制器的引用丢失了,所以当它试图旋转该视图时,它崩溃了。@dcgood我确信我在前一段时间做出决定时有原因,但现在我不明白为什么,所以我将它更改回来,你认为模式分段是问题的根源吗?解除和取消模式分段有什么区别?通常情况下,对于比这更深一层的场景,以及你想启动操作的场景。没有必要使代码过于复杂,因此,尽管在这种情况下展开应该可以工作,但在堆栈中有两个以上的视图并希望展开并启动操作的情况下,只需键入dismissViewControllerAnimated并使用展开就可以了。直观的意思是什么?当您关闭viewcontroller时,您会将其从堆栈中弹出,而当您松开它时,您会做什么?此外,我还记得为什么我一开始没有使用push segue,当我使用它时,视图自动调整大小的行为会很奇怪。展开的操作与从堆栈中弹出视图到某个点的操作相同。两者基本上都有一个完成处理程序。视图自动调整大小可能是您的问题。我不得不想象你在某个地方遇到了一个约束问题。我唯一的错误来自我正在使用的自定义框架:ShinobiCharts,但我一直认为它存在,因为我强制它只停留在横向模式。我把它加在上面了。
0 Retrostock v2 0x232293 0x23228f
1 CoreFoundation 0x29759e09 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 13
2 CoreFoundation 0x296b4515 _CFXNotificationPost + 1785
3 Foundation 0x2a415749 -[NSNotificationCenter postNotificationName:object:userInfo:] + 73
4 UIKit 0x2cdf78b7 -[UIDevice setOrientation:animated:] + 319
5 UIKit 0x2cdf766b -[UIApplication handleEvent:withNewEvent:] + 1599
6 UIKit 0x2cdf6f69 -[UIApplication sendEvent:] + 73
7 Retrostock v2 0x196675 -[IBGMethodSwizzler sendEvent:] (IBGMethodSwizzler.m:103)
8 Retrostock v2 0x14f50b uvSendEvents (UVManager.m:162)
9 UIKit 0x2ce5cc81 _UIApplicationHandleEvent + 633
10 GraphicsServices 0x30f927d1 _PurpleEventCallback + 529
11 GraphicsServices 0x30f9241b PurpleEventCallback + 35
12 CoreFoundation 0x297677cb __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35
13 CoreFoundation 0x29767767 __CFRunLoopDoSource1 + 347
14 CoreFoundation 0x29765d69 __CFRunLoopRun + 1609
15 CoreFoundation 0x296b2201 CFRunLoopRunSpecific + 477
16 CoreFoundation 0x296b2013 CFRunLoopRunInMode + 107
17 GraphicsServices 0x30f91201 GSEventRunModal + 137
18 UIKit 0x2ce56a59 UIApplicationMain + 1441
19 Retrostock v2 0x110690 main () (AppDelegate.swift:14)
20 libdyld.dylib 0x37fdfaaf start + 3
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
// Or to pop back 2
self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)