“这个UIView似乎是NSISVariable的委托,它对此一无所知。这是内部UIKit错误”错误


68

我正在一个opengl项目上。我使用了一些图像(xy比例为2)和标签(8)在屏幕上显示比例。我的第一个观点是tableview我要去的openglView。但每当我回去从openglViewtableView它给我这个错误和应用程序崩溃。

“此UIView似乎是NSISVariable的委托,它对此一无所知。这是一个内部UIKit错误。”

有什么建议?发生这种情况是因为我包含了太多的UI元素,除了那些我使用过的按钮和图像和标签之外。而且我正在申请affineTransform这些图像和标签以及一个按钮。

确切的错误是:

2013-01-31 12:20:18.743 EMtouch[50496:12203] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '{ Rows:
    UILayoutContainerView:0x9835660.Height == 480 + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UILayoutContainerView:0x9835660.Width == 320 + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UILayoutContainerView:0x9835660.minX == 0 + 1*0x7e52ca0.marker + -0.5*0x7e52f90.marker
    UILayoutContainerView:0x9835660.minY == 0 + 1*0x7e52fd0.marker + -0.5*0x7e53030.marker
    UINavigationTransitionView:0x9837ea0.Height == 480 + 1*0x7e51bf0.marker + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UINavigationTransitionView:0x9837ea0.Width == 320 + 1*0x7e519c0.marker + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UINavigationTransitionView:0x9837ea0.minX == 0 + 1*0x7e51940.marker + -0.5*0x7e519c0.marker
    UINavigationTransitionView:0x9837ea0.minY == 0 + 1*0x7e51b80.marker + -0.5*0x7e51bf0.marker
    UIWindow:0x7e1aea0.Height == 480 + 1*0x7e546c0.marker
    UIWindow:0x7e1aea0.Width == 320 + 1*0x7e54330.marker
    UIWindow:0x7e1aea0.minX == 0 + -0.5*0x7e54330.marker + 1*0x7e54410.marker
    UIWindow:0x7e1aea0.minY == 0 + 1*0x7e542d0.marker + -0.5*0x7e546c0.marker
    objective == <250:-0.000579834> + <250:-9.72015e-08>*UILabel:0x7b44bf0.Width + <250:9.72015e-08>*UILabel:0x7b45100.Width

  Constraints:
    <NSAutoresizingMaskLayoutConstraint:0x7e51940 h=-&- v=-&- UINavigationTransitionView:0x9837ea0.midX == UILayoutContainerView:0x9835660.midX>        Marker:0x7e51940.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e519c0 h=-&- v=-&- UINavigationTransitionView:0x9837ea0.width == UILayoutContainerView:0x9835660.width>      Marker:0x7e519c0.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e51b80 h=-&- v=-&- UINavigationTransitionView:0x9837ea0.midY == UILayoutContainerView:0x9835660.midY>        Marker:0x7e51b80.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e51bf0 h=-&- v=-&- UINavigationTransitionView:0x9837ea0.height == UILayoutContainerView:0x9835660.height>        Marker:0x7e51bf0.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e52ca0 h=-&- v=-&- UILayoutContainerView:0x9835660.midX == UIWindow:0x7e1aea0.midX>      Marker:0x7e52ca0.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e52f90 h=-&- v=-&- UILayoutContainerView:0x9835660.width == UIWindow:0x7e1aea0.width>        Marker:0x7e52f90.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e52fd0 h=-&- v=-&- UILayoutContainerView:0x9835660.midY == UIWindow:0x7e1aea0.midY>      Marker:0x7e52fd0.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e53030 h=-&- v=-&- UILayoutContainerView:0x9835660.height == UIWindow:0x7e1aea0.height>      Marker:0x7e53030.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e54330 h=--- v=--- H:[UIWindow:0x7e1aea0(320)]>      Marker:0x7e54330.marker
    <NSAutoresizingMaskLayoutConstraint:0x7e546c0 h=--- v=--- V:[UIWindow:0x7e1aea0(480)]>      Marker:0x7e546c0.marker
    <_UIWindowAnchoringConstraint:0x7e542d0 h=--- v=--- UIWindow:0x7e1aea0.midY == + 240>       Marker:0x7e542d0.marker
    <_UIWindowAnchoringConstraint:0x7e54410 h=--- v=--- UIWindow:0x7e1aea0.midX == + 160>       Marker:0x7e54410.marker
}: internal error.  Cannot find an outgoing row head for incoming head UILabel:0x7b44bf0.Width, which should never happen.'
*** First throw call stack:
(0x1fb1012 0x19f4e7e 0x1fb0deb 0x1599609 0x159c64f 0x159c753 0xe7e8f9 0x982b24 0x982783 0xbba3fe 0xbba698 0x97a3b6 0x97a554 0x28f7d8 0x1c2b014 0x1c1b7d5 0x1f57af5 0x1f56f44 0x1f56e1b 0x34d37e3 0x34d3668 0x93c65c 0xc56d 0x2b35 0x1)
libc++abi.dylib: terminate called throwing an exception

绝对不会有太多的UI元素。仅作猜测,但我知道当应用仿射变换时,该frame属性的值是不确定的。也许自动布局正在使用框架?要测试该理论,您可以删除转换并查看错误是否仍然发生。拥有比我更多的自动排版经验的人可能会有更好的猜测,因为我不知道什么是“传出行头”。也可能值得向苹果公司提出警告。
MaxGabriel

我同意MaxGabriel,这听起来像是自动布局问题。这个opengl是为iphone4s和更早版本编写的,是否有可能不使用ES 3?
Meshach

我们将需要您的tableview父控制器代码来查看所有设置。同样,您来自的控制器代码及其代码可以查看从一个视图控制器转到另一个视图控制器时实际发生的情况。我认为问题根本不是UI元素,但这就是我的猜测。
2013年

听起来好像您的应用程序崩溃了,因为在加载openGL视图时,您将其用作UIView重写器,然后返回到表视图时,就好像程序对表视图一无所知,因此它返回该错误,从而导致应用程序崩溃
2013年

尝试此操作,如果它无法正常工作stackoverflow.com/questions/11303563/…–
艾哈迈德·阿尔斯兰

Answers:


2

“我要从其中转到openglView的表视图”-此语句与仿射变换的用法结合使用,表明您没有在使用标准导航,而是尝试同时移动视图和使用“自动布局”。

崩溃与相反的一组约束有关,我想您正在应用仿射变换,因此弄乱了某些帧。尝试修改约束常量,而不要使用任何变换。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.