ユーザーからデータを収集する複数の対話型ページを持つウィザードを作成する必要があります。これだけの数のページを作るのは、ひとつひとつの窓を作る大変な作業です。それを管理するための簡単なクラスまたはコマンドはありますか?
2 に答える
これを行うには、いくつかの方法があります。まずUINavigationController
、複数のView Controller間を簡単に移動できる a を使用できます。複数のView Controllerを使用しても問題ない場合は、これがおそらく最良のオプションです。
ナビゲーションスタックの次のコントローラーにプッシュするには、次を使用できます。
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"someID"];
[self.navigationController pushViewController:controller animated:YES];
UIScrollView
もオプションですが、アイテムが画面上または画面外に移動したときに慎重な手動メモリ管理が必要になりますが、これはすべて 1 つのクラスで行うことができます。
[arrayOfViews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop) {
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(320 * idx, 0, 320, 480)];
float randNum = arc4random() % 255;
[subView setBackgroundColor:[UIColor colorWithRed:randNum/255.0 green:randNum/255.0 blue:randNum/255.0 alpha:1.0]];
[myScrollView addSubview:subView];
[myScrollView setContentSize:CGSizeMake(320 * (idx + 1), 480)];
}];
次に、最終的かつ最も柔軟なオプションは、メイン ビューのサブビューを作成することであり、すべてのアイテムが画面上でどのように移動するかについて独自のカスタム アニメーションを作成できます。
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
[someSubview setTransform:CGAffineTransformConcat(CGAffineTransformMakeScale(0.5, 0.5), CGAffineTransformMakeTranslation(-300, -300))];
}completion:^(BOOL done){
//some completion items
}];
H2CO3 のコメントを拡張すると、ユーザーが自由に戻ることが許可されていると仮定して、おそらくUINavigationControllerを使用することをお勧めします。次に、新しい UIViewController をスタックにプッシュするだけです。
または、IB を使用してトランジションを使用して、全体を連続して定義できるストーリーボードをチェックアウトすることもできます。ただし、いずれにせよ、それらは UINavigationController に埋め込まれてしまいます。