如何从 UIScrollView 卸载 UIViewController?
Posted
技术标签:
【中文标题】如何从 UIScrollView 卸载 UIViewController?【英文标题】:How do I unload a UIViewController from a UIScrollView? 【发布时间】:2011-04-29 14:49:32 【问题描述】:我使用几乎相同的代码将我的 UIViewController(称为 LessonScrollView)加载到 UIScrollView 中。在scrollViewDidScroll方法中调用该方法
- (void)loadScrollViewWithPage:(int)page
if (page < 0)
return;
if (page >= numPages)
return;
LessonScrollView *controller = [imageViewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null])
controller = [[LessonScrollView alloc] initWithPage:page forLesson:[self title]];
[imageViewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
if (controller.view.superview == nil)
CGRect frame = CGRectMake(0, 80, 320, 285);
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
在某些情况下,我相信有相当多的页面会保留在内存中,直到负责滚动视图的 UIViewController 被释放(或发生内存警告)。
我的问题是,我将如何释放 LessonScrollView 对象。我会调用一个方法,比如说
- (void)unloadScrollViewWithPage:(int)page
在 scrollViewDidScroll 和 page 将是当前页面 - 1。
感谢您提供的任何帮助。
【问题讨论】:
【参考方案1】:试试这个:
[controller.view removeFromSuperview];//to release the controller's view
[imageViewControllers replaceOjectAtIndex:page withObject:[NSNull null]];//to release the actual controller which should lead to it being dealocated
【讨论】:
以上是关于如何从 UIScrollView 卸载 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 [UIScrollView removeFromSuperview] 崩溃了?
UIScrollView+UIView 而不是 UITableView+customcells?
如何从 uiscrollview 中的点击位置获取 UITOUCH?