【问题标题】:Why is my navigation view popping?为什么我的导航视图弹出?
【发布时间】:2014-12-04 09:18:16
【问题描述】:

我遇到了一个问题,当我在下面视图中突出显示的表格视图中上下滚动时,上下滚动几下就可以了,然后看似随机地弹回之前的视图(但是不更新屏幕,所以它看起来只是卡在表格视图中)有时在第一次滚动时它也会弹出视图。

除非有人认为有必要,否则我真的不想发布我的整个班级,但如果有人能指出我为什么会发生这种情况,我将不胜感激。

- (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 上的断点在线程 1 中显示了这一点

 0 [bookmarkTableViewController willMoveToParentViewController:]
 1 _popViewControllerNormal

viewWillDisappear 上的断点

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

因此,作为总结,我可以使用它向上或向下滚动 10 次,然后它会发生,或者它可能会在第一次滚动时发生,所以在我看来它是随机的。如果有人认为它会帮助我分享我的整个课程,它会有所帮助,但它几乎只是一个通用的表格视图。

编辑

我发现这与segue有关。

当我只使用“显示(例如推送)”时,它让我有导航返回按钮但崩溃。当我执行“显示详细信息(例如替换)”时,它永远不会崩溃,这让我认为我可以伪造导航返回按钮,但我真的很想知道为什么会这样。

编辑 2:

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

由于某种原因在滚动区域上下滚动最终会锁定 tableview UI 并调用之前的视图控制器 viewwillappear

编辑 3:

我认为这可能与导航控制器有关,我只是将 hte 项目剥离到它的基本部分,我注意到有时它不是在滚动表格,而是在做侧滑导航返回手势的事情

编辑 4:

是的,我什至无法用objective-c修复它,但它显示https://stackoverflow.com/a/19019924/4056064

【问题讨论】:

    标签: ios uinavigationcontroller ios8 xcode6 tableview


    【解决方案1】:

    我找到了原因。这个导航手势关闭的东西不起作用,所以偶尔会检测到后退导航扫描而不是滚动,它会调用我以前的视图,然后将其返回到当前视图。来源: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;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2018-10-31
      • 2012-02-08
      相关资源
      最近更新 更多