iOS - UIPageViewController '无法确定导航方向' [英] iOS - UIPageViewController 'Failed to determine navigation direction'
问题描述
我有 UIPageViewController
,其中一个视图控制器是 UITableViewController
.每个 UITableViewCell
都可以折叠/展开以隐藏/显示嵌套的表格视图.无论是否展开任何单元格,当我在 UITableView
中上下滚动时,有时会出现此错误:
I have UIPageViewController
with one of its view controllers being a UITableViewController
. Each UITableViewCell
can collapse/expand to hide/show a nested table view. Whether or not any cells are expanded, I get this error sometimes when I scroll up and down in the UITableView
:
2015-08-12 20:11:15.184 MyApp[4506:172368] *** Assertion failure in -[_UIQueuingScrollView _didEndDraggingManualScroll], /SourceCache/UIKit_Sim/UIKit-3347.44.2/_UIQueuingScrollView.m:861
2015-08-12 20:11:15.261 MyApp[4506:172368] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to determine navigation direction'
*** First throw call stack:
(
0 CoreFoundation 0x000000010d52bc65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010c94cbb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010d52baca +[NSException raise:format:arguments:] + 106
3 Foundation 0x000000010b00b98f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195
4 UIKit 0x000000010ba257a2 -[_UIQueuingScrollView _didEndDraggingManualScroll] + 151
5 UIKit 0x000000010ba2147d -[_UIQueuingScrollView _scrollViewDidEndDraggingWithDeceleration:] + 40
6 UIKit 0x000000010b49f8d0 -[UIScrollView _endPanNormal:] + 1415
7 UIKit 0x000000010b4a0ddc -[UIScrollView handlePan:] + 98
8 UIKit 0x000000010b7be656 _UIGestureRecognizerSendActions + 262
9 UIKit 0x000000010b7bd2f9 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532
10 UIKit 0x000000010b7c1f16 ___UIGestureRecognizerUpdate_block_invoke662 + 51
11 UIKit 0x000000010b7c1e12 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254
12 UIKit 0x000000010b7b7e8d _UIGestureRecognizerUpdate + 2796
13 UIKit 0x000000010b45b646 -[UIWindow _sendGesturesForEvent:] + 1041
14 UIKit 0x000000010b45c272 -[UIWindow sendEvent:] + 666
15 UIKit 0x000000010b422541 -[UIApplication sendEvent:] + 246
16 UIKit 0x000000010b42fcdc _UIApplicationHandleEventFromQueueEvent + 18265
17 UIKit 0x000000010b40a59c _UIApplicationHandleEventQueue + 2066
18 CoreFoundation 0x000000010d45f431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
19 CoreFoundation 0x000000010d4552fd __CFRunLoopDoSources0 + 269
20 CoreFoundation 0x000000010d454934 __CFRunLoopRun + 868
21 CoreFoundation 0x000000010d454366 CFRunLoopRunSpecific + 470
22 GraphicsServices 0x0000000110821a3e GSEventRunModal + 161
23 UIKit 0x000000010b40d8c0 UIApplicationMain + 1282
24 MyApp 0x000000010aad6eef main + 111
25 libdyld.dylib 0x000000010e2bc145 start + 1
26 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
我很困惑为什么我会收到这个错误.我想知道我的外部 UITableView
的 UIScrollView
是否与我的 UIPageViewController
的 UIScrollView
冲突,尽管我只是有时会收到此错误.
I am very baffled as to why I'm getting this error. I'm wondering if the the UIScrollView
of my outer UITableView
is conflicting with the UIScrollView
of my UIPageViewController
, although I only get this error sometimes.
我在 Internet 上查找了此错误,但只找到了几次提及,因此将不胜感激任何帮助或建议.谢谢.
I looked up this error on the Internet and I have only found a few mentions of it, so any help or advice would be greatly appreciated. Thanks.
很抱歉之前没有包含此内容,但是 UIPageViewController
具有水平导航.
Sorry for not including this earlier, but the UIPageViewController
has horizontal navigation.
推荐答案
幸运的是,我最终以自己的方式解决了错误.显然,Apple 告诉我 UIPageViewController
中的 UIScrollView
和 UITableViewController
中的一个冲突,导致了这个错误.
I ended up solving the bug my own way, luckily. Apparently, Apple told me that the UIScrollView
in the UIPageViewController
and the one in the UITableViewController
were conflicting, causing this bug.
我所做的只是在整个视图上放置一个 UIPanGestureRecognizer
,每当用户向上或向下滚动时,UIPageViewController
中的 UIScrollView
被禁用,允许用户在 UITableView
中滚动而不会发生冲突或崩溃.当用户停止向上或向下滚动时,会重新启用 UIPageViewController
的 UIScrollView
.
All I did was put a UIPanGestureRecognizer
on the whole view, and whenever the user scrolls up or down, the UIScrollView
in the UIPageViewController
is disabled, allowing the user to scroll through the UITableView
without conflicts or crashing. When the user stop scrolling up or down, the UIScrollView
of the UIPageViewController
is re-enabled.
很沮丧我没有早点想出这个解决方案,但哦,好吧!
Frustrated that I didn't come up with this solution earlier, but oh well!
无论谁遇到了同样的问题并且仍然对我的解决方案感到困惑,请在下面发表评论,我会发布我的代码修复.
Whoever runs into the same problem and his still confused as the how I did my solution, please comment below and I will post my code fix.
这篇关于iOS - UIPageViewController '无法确定导航方向'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!