UIScrollView - 如何在子视图的第二页上重新加载数据?

时间:2012-09-28 04:48:21

标签: ios ios5 uiscrollview ios6

我有一个滚动视图,设置为在两页之间来回滚动。每个页面在同一视图控制器上使用不同的标签等数据。

我需要在每个页面上重新加载数据,而不退出“子”视图。

例如,我在滚动视图中导航到第1页。我的网站svc通过通知向我发送更新的数据。我需要重新加载第2页上的数据,同时仍然位于第1页......或者至少在我开始滚动到第2页时重新加载该数据。

我希望这是有道理的。提前谢谢!

(来自我的scrollView的片段..但我想我需要在我的子视图中添加一些内容..?)

- (void)loadScrollViewWithPage:(int)page {
if (page < 0) return;
if (page >= kNumberOfPages) return;

if ([controllerName isEqualToString:@"ClassicViewController"]){
    ClassicViewController *controller = [viewControllers objectAtIndex:page];
    if ((NSNull *)controller == [NSNull null]) {

        controller = [[ClassicViewController alloc] initWithPageNumber:page];
        controller.referringObject = self.referringObject;
        controller.user = self.user;
        controller.pushedFromScroll = kTrue;
        controller.theirRoll = self.theirRoll;

         NSLog(@"page replaced # = %d", page);
        [viewControllers replaceObjectAtIndex:page withObject:controller];
        [controller release];
    }


    if (nil == controller.view.superview) {
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [scrollView addSubview:controller.view];
    }
}

}

1 个答案:

答案 0 :(得分:0)

您有一些选择,但我认为如果您的数据发布了已更新的通知,您应该让每个页面的视图控制器负责更新其视图的元素。所以 -

  1. 让每个视图控制器使用NSNotificationCenter的{​​{1}}方法订阅您描述的通知。
  2. 实施您传递给addObserver:selector:name:objet的选择器的通知处理程序,以根据更改更新视图。
  3. 希望这有帮助!