Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从UINavigationBar弹出视图控制器时出现UIScrollView错误_Ios_Objective C_Uiscrollview_Uinavigationbar_Uiscrollviewdelegate - Fatal编程技术网

Ios 从UINavigationBar弹出视图控制器时出现UIScrollView错误

Ios 从UINavigationBar弹出视图控制器时出现UIScrollView错误,ios,objective-c,uiscrollview,uinavigationbar,uiscrollviewdelegate,Ios,Objective C,Uiscrollview,Uinavigationbar,Uiscrollviewdelegate,我有一个带有分页UIScrollView的视图控制器。特别是这个滚动视图有3页,我希望它从第二页开始。因此,当视图加载时,我将内容偏移调整为从第二页开始: CGFloat offsetX = _pageWidth * SECOND_PAGE; [_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES]; 但是,当我点击UINavigationBar中的“后退”按钮时,UIScrollView不在第二页中,就会发生错误

我有一个带有分页UIScrollView的视图控制器。特别是这个滚动视图有3页,我希望它从第二页开始。因此,当视图加载时,我将内容偏移调整为从第二页开始:

CGFloat offsetX = _pageWidth * SECOND_PAGE;
[_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];
但是,当我点击UINavigationBar中的“后退”按钮时,UIScrollView不在第二页中,就会发生错误

堆栈跟踪显示导航控制器删除视图、解除锁定、在滚动视图中调用方法
removeFromSuperview
,然后UIScrollView调用
adjustContentOffsetifNeccasary-->notifyDidScroll
。因此,我认为发生的情况是,UIScrollView想要通知UIScrollView委托已发生滚动,但该委托已被释放,并且出现了
EXC\u BAD\u访问

那么,有人知道实现我想要的行为的正确方法是什么吗

下面是我提到的堆栈跟踪:

#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] ()

谢谢

您可以清除
\u scrollView
的委托


当动画结束时,调用了
scrollViewDidScroll
,您可以使用
\u scrollView
的委托,但它被解除分配,成为一个野生指针。

您是否尝试启用僵尸?我也有同样的问题,你知道怎么解决吗?谢谢
[_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:NO];