为什么我的导航视图会弹出?

时间:2014-12-04 09:18:17

标签: ios uinavigationcontroller ios8 xcode6 tableview

我有一个问题,当我在下面的视图中突出显示的表格视图中上下滚动时,它可以很好地上下几个卷轴然后看似随机它会弹回到之前查看(但没有更新屏幕,因此它看起来只是卡在表格视图中)有时在第一个滚动条上它也会弹出视图。

storyboard 除非有人认为有必要,否则我不想发表全班,但如果有人能指出我为什么会这样做,我会感激不尽。

- (void) viewWillDisappear:(BOOL)animated
{
NSLog(@"Is this being dismissed: %d", [self isBeingDismissed]); // returns 0
NSLog(@"isMovingFromParentViewController %d", [self isMovingFromParentViewController]); // returns 0
NSLog(@"viewWillDisappear occured on bookmark table"); 
}

-(void)willMoveToParentViewController:(UIViewController *)parent {
NSLog(@"This VC has has been pushed popped OR covered"); // this is happening
if (!parent)
    NSLog(@"This happens ONLY when it's popped"); // this is happening
}

有人能告诉我一种方法来找出调用willMoveToParentViewController或viewWillDisappear的内容吗?我已经在调试日志中查看了一下暂停但是之前只是说了

willMoveToParentViewController上的断点在Thread 1中显示了这个

 0 [bookmarkTableViewController willMoveToParentViewController:]
 1 _popViewControllerNormal

viewWillDisappear上的断点

 0 [bookmarkTableViewController viewWillDisappear:]
 1 [UIViewController _setViewApppearState:isAnimating:]

总而言之,我可以将其用于向上或向下10次滚动,然后它会发生,或者它可能会在第一次滚动时发生,所以它对我来说是随机的。如果有人认为它会帮助我分享我的整个班级,那么它会提供帮助,但它只是一个通用的表格视图。

编辑

我发现它与segue有关。

当我只使用Show(例如Push)&#39;时,它让我有导航后退按钮但崩溃了。当我做“显示细节”(例如替换)时,它永远不会崩溃导致我认为我可以伪造导航后退按钮,但我真的想知道为什么会发生这种情况。< / p>

编辑2:

我注意到即使使用空白表列表也会出现问题,因此它与此无关。当我在完全空的新表视图控制器上上下滚动垃圾邮件时,它完全一样。

enter image description here

出于某种原因,在滚动区域中向上和向下滚动最终会锁定tableview UI并调用先前的视图控制器viewwillappear

编辑3:

我认为它可能与导航控制器有关,我只是将项目剥离到它的裸骨,我注意到有时而不是桌面滚动它做侧扫导航回来的手势

编辑4:

是的,我甚至无法用Objective-c修复它,但它说https://stackoverflow.com/a/19019924/4056064

1 个答案:

答案 0 :(得分:0)

我找到了原因。这个导航手势关闭的东西不起作用,所以偶尔检测到后导航扫描而不是滚动,它调用我以前的视图,然后将其返回到当前视图。来源:https://stackoverflow.com/a/19019924/4056064很高兴听到有人有任何解决方法。

编辑:找到了解决方法

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return NO;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
}