„Diese UIView scheint der Delegierte einer NSISVariable zu sein, von der sie nichts weiß. Dies ist ein interner UIKit-Fehler. “Fehler

68

Ich arbeite an einem OpenGL-Projekt. Ich habe einige Bilder (2 für xy-Skalen) und Beschriftungen (8) verwendet, um die Skala auf dem Bildschirm anzuzeigen. Meine erste Ansicht ist eine, tableviewvon der aus ich gehe openglView. Aber wenn ich zurück openglViewzum gehe tableView, gibt es diesen Fehler und App stürzt ab.

"Diese UIView scheint der Delegierte einer NSISVariable zu sein, von der sie nichts weiß. Dies ist ein interner UIKit-Fehler."

Irgendwelche Vorschläge? Geschieht dies, weil ich zu viele UI-Elemente einbinde, außer den Bildern und Beschriftungen, für die ich auch einige Schaltflächen verwendet habe? Und ich bewerbe mich auch affineTransformfür diese Bilder und Etiketten und eine Schaltfläche.

Der genaue Fehler ist:

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
user1589426
quelle
Es werden definitiv nicht zu viele UI-Elemente sein. Ich nehme nur eine Vermutung an, aber ich weiß, dass der Wert der frameEigenschaft undefiniert ist , wenn eine affine Transformation angewendet wird. Vielleicht verwendet Autolayout den Rahmen? Um diese Theorie zu testen, können Sie die Transformationen entfernen und prüfen, ob der Fehler weiterhin auftritt. Jemand mit mehr Autolayout-Erfahrung als ich hat wahrscheinlich eine bessere Vermutung, da ich nicht weiß, was "ausgehende Reihenköpfe" sind. Es könnte sich auch lohnen, ein Radar bei Apple einzureichen.
MaxGabriel
Ich stimme MaxGabriel zu, es klingt nach einem Autolayout-Problem. Gibt es eine Chance, dass dieses OpenGl für iPhone4s und früher geschrieben wurde, das heißt, Sie verwenden ES 3 nicht?
Meshach
Wir benötigen Ihren übergeordneten Controller-Code für die Tabellenansicht, um zu sehen, wie alles eingerichtet ist. Außerdem der Controller-Code, von dem Sie kommen, und sein Code, um zu sehen, was tatsächlich passiert, wenn Sie von einem Viewcontroller zum anderen wechseln. Ich glaube nicht, dass das Problem die UI-Elemente sind, aber das ist meine Vermutung.
SH
Es hört sich so an, als ob Ihre Anwendung abstürzt, da Sie diese beim Laden der openGL-Ansicht als UIView-Overrider verwenden und beim Zurückkehren zur Tabellenansicht das Programm nichts über die Tabellenansicht weiß und daher zurückkehrt der Fehler, so dass die Anwendung abstürzt
user2277872
Versuchen Sie dies, wenn es funktioniert oder nicht stackoverflow.com/questions/11303563/…
Ahmad Arslan

Antworten:

2

"Tabellenansicht, von der aus ich zu openglView gehe" - Diese Anweisung in Kombination mit der Verwendung der affinen Transformation legt nahe, dass Sie keine Standardnavigation verwenden und versuchen, Ansichten zu verschieben und gleichzeitig Autolayout zu verwenden.

Dieser Absturz hängt mit den entgegengesetzten Einschränkungen zusammen. Ich denke, Sie wenden eine affine Transformation an und bringen daher einige Frames durcheinander. Versuchen Sie, Einschränkungskonstanten zu ändern, anstatt Transformationen zu verwenden.

Wladek Surala
quelle