Frage

Meine App, die einen in UIPageViewController eingebetteten UITableViewController enthält, löst diese Ausnahme von Zeit zu Zeit aus:

Invalid parameter not satisfying: [views count] == 3

Rückverfolgung:

* thread #1: tid = 0x6239fa, 0x03d1d88a libobjc.A.dylib`objc_exception_throw, queue = 'com.apple.main-thread, stop reason = breakpoint 25.3
    frame #0: 0x03d1d88a libobjc.A.dylib`objc_exception_throw
    frame #1: 0x0404f448 CoreFoundation`+[NSException raise:format:arguments:] + 136
    frame #2: 0x03428fee Foundation`-[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
    frame #3: 0x01e7c535 UIKit`-[_UIQueuingScrollView _replaceViews:updatingContents:adjustContentInsets:animated:] + 185
    frame #4: 0x01e800ca UIKit`-[_UIQueuingScrollView _didScrollWithAnimation:force:] + 1231
    frame #5: 0x01e7bb57 UIKit`-[_UIQueuingScrollView _scrollViewAnimationEnded:finished:] + 104
    frame #6: 0x0190583c UIKit`-[UIScrollView(UIScrollViewInternal) animator:stopAnimation:fraction:] + 62
    frame #7: 0x0197096e UIKit`-[UIAnimator stopAnimation:] + 533
    frame #8: 0x0197100a UIKit`-[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 325
    frame #9: 0x01970b76 UIKit`-[UIAnimator(Static) _LCDHeartbeatCallback:] + 67
    frame #10: 0x01663b8a QuartzCore`CA::Display::DisplayLinkItem::dispatch() + 48
    frame #11: 0x01663a46 QuartzCore`CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 310
    frame #12: 0x01663f6b QuartzCore`CA::Display::TimerDisplayLink::callback(__CFRunLoopTimer*, void*) + 123
    frame #13: 0x0400dbd6 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
    frame #14: 0x0400d5bd CoreFoundation`__CFRunLoopDoTimer + 1181
    frame #15: 0x03ff5628 CoreFoundation`__CFRunLoopRun + 1816
    frame #16: 0x03ff4ac3 CoreFoundation`CFRunLoopRunSpecific + 467
    frame #17: 0x03ff48db CoreFoundation`CFRunLoopRunInMode + 123
    frame #18: 0x0533b9e2 GraphicsServices`GSEventRunModal + 192
    frame #19: 0x0533b809 GraphicsServices`GSEventRun + 104
    frame #20: 0x01874d3b UIKit`UIApplicationMain + 1225

Hat das schon jemand gesehen oder hat eine Idee, was der Grund sein könnte?

War es hilfreich?

Lösung

edit: Nachdem ich diesen Fix für mehr Zeit verwendet habe, kann ich den Fehler weiterhin gelten, so dass dies nicht der vollständige Fix (gut ... es war immer irgendwie ein Hack).Ich werde mit der eigentlichen Lösung aktualisieren, sobald ich es finden werde.


Ich habe mit dem UIPageViewController mit demselben Fehler aufgetreten.Nachdem ich das Problem debugging, habe ich festgestellt, dass die Ursache UIVView-Animationen in der SetViewController von UipageViewController verwendet wurde: Richtung: Animiert: Fertigstellung :.

Ich weiß nicht, warum an dieser Bühne animiert wird, dass der Assertion-Fehler (ich nicht den UIPageViewController oder seine untergeordneten Controller animiert), sondern den Codeblock mit Dispatch_ASync auf der Hauptwarteschlange umwickelt, löst das Problem und stoppt den Absturz.

Andere Tipps

Ich habe diesen Absturz gesehen, wenn er versucht, auf eine neue Seite programmgesteuert zu wechseln.Eine Antwort, die mir Sinn gemacht hat, ist, dass sie nicht erlaubt, die Seitenansicht während des Übergangs zu berühren.

generasacodicetagpre.

Stellen Sie einfach sicher, dass Sie keine Animationen in der SehenswürdigkeitDIDIDAPPEAR in der Controller machen, in die Sie zurückkehren.Oder wenn Sie es nach einer Verzögerung tun müssen, sobald die Ansicht angezeigt ist.

Ich benutze UIPageViewController mit Punkten.Nach Benutzerkreistern an den Punkten wird der Delegierte didfinishanimating angerufen und ich löse andere Animationen aus, dann stürzt es ab.Es passiert jedoch nur, wenn der Benutzer auf den Punkten st.

generasacodicetagpre.

Ich habe den gleichen Fehler bei einem UIViewController festgestellt, den ich in einen UIPageViewController eingebettet hatte.In meinem Fall wurde mir klar, dass mein Kindercontroller überschrieben hatte viewWillAppear und viewDidAppear ohne durch zu rufen super.Obwohl ich die Details nur erraten kann, ist es sinnvoll, dass dies die Ansichtsverwaltung durcheinander bringen könnte.Hinzufügen der super anrufe ließen das Problem verschwinden.

In meinem Fall lag das Problem in der Implementierung von UIPageViewControllerDelegate:

Ich aktualisiere Einschränkungen in pageViewController(_ pageViewController:, didFinishAnimating:, previousViewControllers:, transitionCompleted:)

dispatch_async in der Hauptwarteschlange beheben Sie dieses Problem

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top