4

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

这段代码添加在 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 在每个视图控制器中被调用。没有其他方法被调用而且有些方法中有 UItableviews。但它只显示第一个单元格。

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

谢谢

4

1 回答 1

7

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

[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

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

于 2013-09-19T14:40:03.427 回答