4

既存のアプリケーションのレイアウトを変更しています。ユーザーがスワイプして次の画面に移動できるスクロールビューに追加する必要がある一連のビューがあります。以下のコードを使用して、スクロールビューにコントローラーを追加しました。

このコードは、UIScrolliew を保持する Viewcontroller の viewDidLoad に追加されます。

.

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];

そして、これは1つを削除するためのものです:

[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 に答える