2015-02-10 191 views
1

这可能是关于PageViewControllers或我的视图的一般管理的一个菜鸟问题。UIPageViewController在访问UITableView内容后不加载页面内容

我有一个PageViewController,可以让我滑过......呃,你知道它是干什么的。在每个动态页面上,我都有一个标签,可以给出当前的游戏状态消息和嵌入式UITableView,其中包含玩家列表和他们的分数(请参阅附件#1)。

当我点击播放器查看其配置文件,然后返回到我的pageviewcontroller时,我看到的数据就是我最初离开视图时的数据 - 这很好。但是,当我向前或向后滑动页面时,数据不会自行清除,并在新近刷入的视图之上进行分层(请参阅附件#2)。另外,tableview应该显示这个屏幕没有点。

第三个屏幕抓图显示数据应该如何看

想法/评论,看起来对任何人都很熟悉?

在此先感谢 :-)

Initial page prior looking at their profile combined views with data not clearing How the second page should look

编辑

按要求

数字2,”增加了更多的详细信息... “和”playe r 1处于领先地位“部分都是在下例中显示的PageContentViewController上找到的所有UILabels。我的ScoringViewController实际上只负责设置页面视图,并加载后续页面。

ScoringViewController.m

-(void)loadPages:(int)startingPage { 
    // Create page view controller 
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"]; 
    self.pageViewController.dataSource = self; 

    PageContentViewController *startingViewController = [self viewControllerAtIndex:startingPage]; 
    NSArray *viewControllers = @[startingViewController]; 

    // Advance to next page ("hole"); 
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

    // Change the size of page view controller 
    self.pageViewController.view.frame = CGRectMake(
               0, 
               0, 
               self.view.frame.size.width, 
               self.view.frame.size.height); 

    [self addChildViewController:_pageViewController]; 
    [self.view insertSubview:_pageViewController.view atIndex:0]; 
    [self.pageViewController didMoveToParentViewController:self]; 
} 

-(PageContentViewController *)viewControllerAtIndex:(NSUInteger)index { 
    // Create a new view controller and pass suitable data. 
    PageContentViewController *pageContentViewController = [self.storyboard 
                 instantiateViewControllerWithIdentifier:@"PageContentViewController"]; 

    pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"]; 
    pageContentViewController.pageIndex = index; 

    return pageContentViewController; 
} 

PageContentViewController.m

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // Add 1 to the page index since it's zero based. 
    int tmpPageIndex = _pageIndex + 1; 

    _lblCurrentHole.text = [NSString stringWithFormat:@"%d",tmpPageIndex]; 
} 

在我configureCell方法表视图,它只是触及leaderCheck函数,然后显示正确的消息。除此之外,没有别的真的。如果我不要转到配置文件页面并回来,它会很好用。

该代码在我之前在AppCoda上找到的示例中有个根。 (http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/)。

EDIT 包含的特写颜色的内容视图的显示在顶部的主视图上的上底部的分离和的tableview。

当我离开这个视图并回到它时,是不是正确地从记忆清除了?

enter image description here enter image description here

+0

你可以显示代码/故事板的详细信息。它看起来**,就像你可能每次在视图中添加一个标签。但我无法从图片中知道这是“内容页面”视图,还是表格视图单元格,或... – pbasdf 2015-02-10 19:49:31

+0

这些标签是在tableView单元格中,还是直接在页面内容视图中? – pbasdf 2015-02-11 13:32:15

+0

标签位于页面内容视图中。 TableView只有玩家的名字/分数。我会给视图添加一些颜色,以便视觉上更好地分离它们。 – Drew 2015-02-11 13:53:27

回答

1

我认为在ScoringViewControllerloadPages:方法被调用了两次,因为它是从viewWillAppear调用。当VC第一次显示时,将调用viewWillAppear,但是当剖析视图控制器被解除时,也会调用它。因此,你最终得到两个pageViewControllers,一个显示通过另一个。如果将代码移动到viewDidLoad,它应该可以正常工作。