0

したがって、セグメントツールを押して、UIScrollViewを含むUIViewを別のビューに追加します。

UIView.h

@interface gettingELORolesViewController : UIViewController{
    UIViewController *currentController;
    NSMutableArray *viewControllers;
}
- (IBAction)SegmentToggle:(UISegmentedControl *)sender;
@property (strong, nonatomic) IBOutlet UIView *containerView;

UIView.m

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard_iPhone"
                                                  bundle:nil];

 firstView *FirstView = [sb instantiateViewControllerWithIdentifier:@"firstOne"];
 secondView *SecondView = [sb instantiateViewControllerWithIdentifier:@"secondOne"];

 viewControllers = [NSMutableArray arrayWithObjects:FirstView,SecondView,nil];

 currentController = FirstView;

 [containerView addSubview:FirstView.view];//containerView = self.view

次に、選択したセグメントに応じて、異なるビューが表示されます。

- (IBAction)SegmentToggle:(UISegmentedControl *)sender {
    UIViewController *selectedView=nil;

    if (sender.selectedSegmentIndex==0) {
        selectedView= [viewControllers objectAtIndex:0]; // retrieve object at index 0 from viewControllers array

    }
    else if(sender.selectedSegmentIndex==1){    
        selectedView= [viewControllers objectAtIndex:1]; // retrieve object at index 1 from viewControllers array

    }

    [currentController.view removeFromSuperview]; // remove Current displaying view from superView
    currentController=selectedView; // make selected View to be the current View
    [containerView addSubview:selectedView.view]; // Add newly selected view on container View
}

secondViewはtableViewControllerであり、2番目のセグメントを選択するとすべてがうまく機能します。最初のものを選択すると表示されますが、スクロールが機能せず、理由がわかりません。

firstView.mviewDidLoadメソッドは次のようになります。

-(void)viewDidLoad{
    [super viewDidLoad];
    mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [mainScrollView setContentSize:CGSizeMake(320, 600)];
    [mainScrollView setScrollEnabled:YES];
}

ページングは​​storyBoardで有効になっています。そして、firstViewの.hファイルに接続しました。私が間違っていることを教えてください。

4

1 に答える 1

0

を呼び出すと-SegmentToggle:

  • というローカル変数を作成しますselectedView
  • selectedView選択されたセグメントに応じてView Controllerを割り当てます
  • メソッドが終了selectedViewし、範囲外になる

要するに、あなたは何もしていません。少なくとも、現在のビュー階層のビューを選択したコントローラーのビューに置き換える必要があります (後で検索するために、選択したコントローラーへの参照をインスタンス変数に隠しておくことはできますか?)

しかし、一歩下がって、他のView Controllerを管理するView Controllerを作成しようとしているようです。iOS 5 の時点では、これに関する非常に具体的なルールがあります。詳細と例については、「UIViewController Containment の実装」と呼ばれるWWDC 2011 のビデオをご覧ください。

于 2013-02-17T18:06:23.427 に答える