滚动视图不一致地加载内容的不同部分? (IOS)

时间:2013-07-12 16:49:15

标签: ios tabs scrollview switching

这对我来说似乎有些奇怪,但我是iOS的新手,所以显而易见的事情可能正在发生,我不知道(我把星号称为不一致的部分):

  1. 我有两个标签:Tab1和Tab2
  2. Tab1是一个基本视图。
  3. Tab2是Master-Detail类型设计模式,UITableViewController作为Master选项卡,Scroll View(嵌套在UIViewController中)作为Detail选项卡。
  4. 每当我在Tab2的主视图中单击一个单元格时,它会按预期将我带到详细信息视图。
  5. 如果我在详细信息视图中向下滚动,然后单击Tab1,然后单击Tab2,它将重新加载它停止的详细信息视图(向下滚动)。*
  6. 然而,在我这样做之后,如果我单击Tab1然后单击Tab2(与我在上一步中完全相同),它将从页面顶部重新加载详细信息视图。*
  7. 我告诉它使用此代码从页面顶部重新加载详细信息视图,该代码位于包含滚动视图的视图控制器的类中:

    -(void)viewDidAppear:(BOOL)animated{
        [self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0) animated:NO];
        [self.scrollView setScrollEnabled:YES];
        [super viewDidAppear:animated];
    }
    

    我发现第一次在标签之间来回切换(第5步)并没有从屏幕顶部显示滚动视图,而是第二次在标签之间来回切换时,我感到非常奇怪(步骤6)确实显示了屏​​幕顶部的滚动视图。

    有什么可能导致它的想法吗?当重新加载多次或类似的东西时,是否通过不同的方法加载制表符?

    任何建议将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

我想通了,应该是viewWillAppear,而不是viewDidAppear

-(void)viewWillAppear:(BOOL)animated{
    [self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0) animated:NO];
    [self.scrollView setScrollEnabled:YES];
    [super viewDidAppear:animated];
}