0

FORループとサブビューについて質問があります。ループが異なるサブビュー名で実行されるたびに、異なるサブビューを表示したいと思います。名前は「hoofdstukController」+iカウントである必要があります。

これどうやってするの?いくつかの方法を試しましたが、すべてアプリがクラッシュしました。これは私のループです:

_viewControllers = [[NSMutableArray alloc] init];
for (int i = 0; i < 10; i++)
{
    CGRect frame = _scrollView.frame;
    frame.origin.x = frame.size.width * i;
    frame.origin.y = 0; 
    hoofdstukController.view.frame = frame;
    [_scrollView addSubview:hoofdstukController.view];
    [_viewControllers addObject:hoofdstukController];
}

誰かが私を正しい方向に押してくれることを願っています!

ありがとう。

4

2 に答える 2

1

最初にすべてのビューコントローラーを配列に追加する必要があります。

_viewControllers = [[NSMutableArray alloc] init];
[_viewControllers addObject:hoofdstukController];
[_viewControllers addObject:hoofdstukController0];
[_viewControllers addObject:hoofdstukController1];
//etc.

次に、その配列をループして、ビューをサブビューとして追加できます。親ビューコントローラーの子ビューコントローラーとしても追加する必要があることに注意してください。

編集:「i」が機能するには申し訳ありませんが、少し変更する必要があります

for (UIViewController *vc in _viewControllers)
{
    CGRect frame = _scrollView.frame;
    frame.origin.x = frame.size.width * i;
    frame.origin.y = 0; 
    vc.view.frame = frame;

    [viewControllerHostingTheScrollView addChildViewController:vc];
    [_scrollView addSubview:vc.view];
    [vc didMoveToParentViewController:viewControllerHostingTheScrollView];
}

編集:「i」が機能するために申し訳ありませんが、少し変更する必要があります:

int i = 0;
for (UIViewController *vc in _viewControllers)
{
    CGRect frame = _scrollView.frame;
    frame.origin.x = frame.size.width * i++;
    frame.origin.y = 0; 
    vc.view.frame = frame;

    [viewControllerHostingTheScrollView addChildViewController:vc];
    [_scrollView addSubview:vc.view];
    [vc didMoveToParentViewController:viewControllerHostingTheScrollView];
}
于 2012-10-26T12:28:32.127 に答える
0

コード hoofdstukController.view.frameでは、1 つの hoofdstukController でフレームを 10 回設定します。そこに最終フレームがかかります( frame.size.width * i)。ここでは、 for ループ実行のたびにメソッドを実行する alloc必要があります。initsetTaghoofdstukController.tag=i

于 2012-10-26T11:47:34.850 に答える