访问UITableView内容后,UIPageViewController不加载页面内容

时间:2015-02-10 19:20:04

标签: ios objective-c uitableview delegates uipageviewcontroller

这可能是关于PageViewControllers或我的观点的一般管理的noob问题。

我有一个允许我滑动的PageViewController ......好吧,你知道它做了什么。在每个动态页面上,我都有一个标签,提供当前游戏状态消息和一个嵌入式UITableView,其中包含一系列玩家及其分数(参阅附件#1)。

当我点击播放器查看他们的个人资料,然后返回我的pageviewcontroller时,我看到的数据是我最初离开视图时的数据 - 这很好。但是......当我向前或向后滑动到后续页面时,该数据不会自行清除并在新刷过的视图中分层(参见附件#2)。此外,tableview应显示此屏幕没有分数。

第3次屏幕抓取显示应该的数据。

思考/评论,对任何人都很熟悉?

提前谢谢 : - )

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

修改

按要求添加了更多详细信息

数字2," ..."并且"球员1领先"部分是在下面的示例中显示的PageContentViewController上找到的所有UILabel。我的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/)。

修改 包括用颜色关闭内容视图,以显示顶部主视图和底部的tableview的分离。

当我离开这个视图并回到它时,是否有些东西没有正确地从内存中清除?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

我认为loadPages:中的ScoringViewController方法被调用两次,因为它是从viewWillAppear调用的。首次显示VC时将调用viewWillAppear,但在关闭配置文件视图控制器时也会调用pageViewControllers。因此,您最终会得到两个viewDidLoad,其中一个显示另一个{{1}}。如果您将代码移到{{1}},它应该可以正常工作。