将UIViewcontrollers添加到UIScrollview

时间:2013-09-19 14:33:37

标签: iphone ios objective-c uitableview uiscrollview

我正在更改现有应用程序的布局。现在需要将一系列视图添加到滚动视图中,用户可以滑动以移动到下一个屏幕。我已使用下面的代码将控制器添加到scrollview。

  

此代码添加在Viewcontroller的viewDidLoad中   持有UIScrolliew

int i=1;
int width = 0,height=0;
for(POTCTask *task in [CommonData tasks])
{
    UIViewController<TaskViewController> *controller = [TaskViewFactory getTaskViewController:(task.inputTypeId)];
    width = controller.view.frame.size.width;
    height = controller.view.frame.size.height;
    controller.view.frame = CGRectMake(width*(i-1), 0, width, height);
    [self.scrollView addSubview:controller.view];
    i++;
}
self.scrollView.contentSize = CGSizeMake(width*i, height);

加载所有视图都很好。但是只有viewDidLoad在每个viewcontroller中被调用。没有其他方法被调用而且有些方法中有UItableviews。但它只展示了第一个细胞。

如何在ios中正确执行此操作?

由于

1 个答案:

答案 0 :(得分:7)

我相信您的问题是您没有将这些视图控制器添加为包含您的滚动视图的控制器的子项。在Apple的View Controller编程指南中,他们提供了添加子控制器的示例:

[self addChildViewController:content];
content.view.frame = [self frameForContentController];
[self.view addSubview:self.currentClientView];
[content didMoveToParentViewController:self];

这个用于删除一个:

[content willMoveToParentViewController:nil];
[content.view removeFromSuperview];
[content removeFromParentViewController];

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

我相信这会导致其他方法运行。