0

絵コンテ

AまたはBのいずれかからUITabBarController D(アプリケーションのメインインターフェイス)に移行する「最良の」方法を理解しようとしています-条件付きでCを通過します.

つまり、次のすべてが有効であることを望みます。

A -> C -> D
A -> B -> C -> D
A -> B -> D
A -> D

C はモーダル ダイアログであり、プロファイルに情報が設定されていない場合、基本的に不足している情報をユーザーに尋ねます。

私はもう試した:

  1. D の viewDidLoad 関数で D -> C からトリガーされたモーダル セグエを使用する:

    ([self performSegueWithIdentifier:@"ShowNumberDialog" sender:self];)
    
  2. viewDidLoad 関数で C を D のモーダルとしてプログラムで表示します。

    (void)viewDidLoad
    {
        [super viewDidLoad];
    
        NSString *deviceNumber = [[UserModel sharedSingleton] deviceNumber];
        if ([deviceNumber isEqual:[NSNull null]]) {
    
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
            UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"NumberDialog"];
            [vc setModalPresentationStyle:UIModalPresentationFullScreen];
    
            NSLog(@"Showing device number dialog");
           [self presentModalViewController:vc animated:NO];
        }
    }
    

これらのどちらも、さらに私が行った数え切れないほどの他の「ハッキー」な試みは機能しているようです。したがって、これを行う方法について基本的なことを理解していないと思います。誰かがより良い方法をお勧めできますか?

4

2 に答える 2

1

にあるコードを に移動してみてViewDidLoadくださいViewDidAppear:(BOOL)animated。タブ ページ D への移行がまだ行われている間に、モーダル ダイアログをプログラムにプッシュしようとしている可能性があります。これは、アプリケーションがモーダル ダイアログ C を開く要求を無視し、D をロードし続けることを意味しますViewDidAppear:(BOOL)animated。ビューが最終的にユーザーに表示され、完全に読み込まれます。

于 2012-08-05T22:18:04.137 に答える
0

基本的に、D から C への "performSegue..." を理解していません。TabBar はユーザーによってトリガーされるため、ユーザーはアイコンをタップしてこのコントローラーにアクセスする必要があります。

B と D の間に C を配置します。情報が完全かどうかを確認します。ない場合は C に、そうでない場合は D に移動します。

このアプローチに問題はありますか?

于 2012-08-05T20:28:04.903 に答える