滚动视图加载内容的不同部分不一致? (iOS)
Posted
技术标签:
【中文标题】滚动视图加载内容的不同部分不一致? (iOS)【英文标题】:Scroll view loads a different part of the content inconsistently? (iOS) 【发布时间】:2013-07-12 16:49:14 【问题描述】:这对我来说似乎有点奇怪,但我是 ios 新手,所以可能会发生一些我不知道的明显事情(我在不一致的部分加上星号):
-
我有两个选项卡:Tab1 和 Tab2
Tab1 是基本视图。
Tab2 是 Master-Detail 类型的设计模式,以 UITableViewController 作为 Master 选项卡,以 Scroll View(嵌套在 UIViewController 中)作为 Detail 选项卡。
每当我单击 Tab2 主视图中的一个单元格时,它都会按预期将我带到详细信息视图。
如果我在“详细信息”视图中向下滚动,然后单击 Tab1,然后单击 Tab2,它会在停止的位置重新加载详细信息视图(向下滚动)。*
但是,在我执行此操作后,如果我单击 Tab1,然后单击 Tab2(与我在上一步中所做的完全相同),它会从页面顶部重新加载详细信息视图。*
我告诉它使用此代码从页面顶部重新加载详细信息视图,该代码位于包含滚动视图的视图控制器的 Class 内:
-(void)viewDidAppear:(BOOL)animated
[self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0) animated:NO];
[self.scrollView setScrollEnabled:YES];
[super viewDidAppear:animated];
我只是发现第一次在选项卡之间来回切换(第 5 步)并没有从屏幕顶部显示滚动视图,但第二次在选项卡之间来回切换(第 6 步)真的很奇怪) 确实从屏幕顶部显示了滚动视图。
知道是什么原因造成的吗?多次重新加载选项卡时,它们是否通过不同的方法加载?
任何建议将不胜感激!谢谢!
【问题讨论】:
如果你在你的viewDidAppear
方法中加入一个NSLog
,是不是每次都会输出?
@SimonGermain 是的,它每次都输出它。也许内容偏移量第一次被覆盖?它会被什么覆盖?
@SimonGermain 等等,我搞定了!我把 viewDidAppear 改成了 viewWillAppear,效果很好。
如果您NSLog("%@", self.scrollView)
,您是否每次都能获得正确的滚动视图,并且它是否有关联的 CALayer?确保将其添加到超级视图中。
太棒了!很高兴听到这个消息:)
【参考方案1】:
我想通了,应该是viewWillAppear,而不是viewDidAppear
-(void)viewWillAppear:(BOOL)animated
[self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0) animated:NO];
[self.scrollView setScrollEnabled:YES];
[super viewDidAppear:animated];
【讨论】:
以上是关于滚动视图加载内容的不同部分不一致? (iOS)的主要内容,如果未能解决你的问题,请参考以下文章