gpt4 book ai didi

ios - 从 UINavigationBar 弹出 View Controller 时出现 UIScrollView 错误

转载 作者:行者123 更新时间:2023-12-01 16:44:00 24 4
gpt4 key购买 nike

我有这个带有分页 UIScrollView 的 View Controller 。具体来说,这个 ScrollView 有 3 页,我希望它从第二页开始。因此,当 View 加载时,我将内容偏移量调整为从第二页开始:

CGFloat offsetX = _pageWidth * SECOND_PAGE;
[_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];

但是当我点击 UINavigationBar 中的“返回”按钮,并且 UIScrollView 不在第二页中时,就会发生错误。

堆栈跟踪显示导航 Controller 删除了 View ,解除分配,在 ScrollView 中调用方法 removeFromSuperview ,然后 UIScrollView 调用 adjustContentoffsetIfNeccesary--->notifyDidScroll .所以我认为发生的事情是 UIScrollView 想要通知 UIScrollView 委托(delegate)发生了滚动,但委托(delegate)已经发布,并且 EXC_BAD_ACCESS发生。

那么,任何人都知道实现我想要的行为的正确方法是什么?

这是我谈到的堆栈跟踪:
#1  0x0075595b in -[UIScrollView(UIScrollViewInternal) _notifyDidScroll] ()
#2 0x0073fc43 in -[UIScrollView setContentOffset:] ()
#3 0x0075ccae in -[UIScrollView(UIScrollViewInternal) _adjustContentOffsetIfNecessary] ()
#4 0x00758b46 in -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:pin:tramplingDragFlags:] ()
#5 0x00758bda in -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:pin:] ()
#6 0x0074069e in -[UIScrollView removeFromSuperview] ()
#7 0x0071a715 in -[UIView dealloc] ()
#8 0x00718124 in -[UIView release] ()

谢谢。

最佳答案

你可以清除_scrollView的代表;

或者

[_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:NO];

动画结束时, scrollViewDidScroll被调用,你可以使用 _scrollView的委托(delegate),但它被释放,变成了一个野指针。

关于ios - 从 UINavigationBar 弹出 View Controller 时出现 UIScrollView 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21679991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com