1

私はメイン画面があるようにiPhoneアプリを設計しています。私はユーザーがこの画面の右下にある情報ボタンを押して、オプションやさまざまな形式のデータ表示を扱う完全に異なるインターフェイスに入ることを望みます。モーダルUITabBarControllerデザイン

アップルのドキュメンテーションのView Controllerに関するいくつかの調査の後、情報ボタンを押したときにモーダルビューを使用したいと確信しています。私の問題は、最適なインターフェイスはUITabBarControllerだということです。私はメイン画面を表す私のUITabBarControllerのタブを持っていたいと思います。タッチすると、メイン画面にUITabBarControllerを閉じるよう指示します。

UITabBarControllerのモーダルビューを解除するボタンが付いたカスタムビューコントローラを追加するWeb上の例がかなりありますが、余分なビューの表示を完全に避けたいと思います。ユーザーがメイン画面のタブに触れるとすぐに、私はモーダル表示を消したいと思います。私はすでにUITabBarControllerにメイン画面を配置し、満足していないアプローチを試していましたので、稀なモーダルUITabBarControllerデザインに精通していて、助けてくれることを願っています。

これはすべて可能ですか?そうでない場合、どのようにして同じインターフェースフローを別の方法で達成できますか?

私はこれをまだ試していませんが、空のUIViewControllerを使ってUITabBarControllerを設定してメイン画面を表示し、UITabBarControllerDelegateを呼び出して空のビューの前にメイン画面にメッセージを送信する方法があります表示されますか?

答えて

2

を考慮する必要があり、私はこれを考え出しました。私はこれがおそらく最も正統なUIデザインではないと認めますが、それは直感的な意味合いを持っていると思います。誰かがApple UIガイドラインにリンクしているはずです。

次のコードでは、モーダルUITabBarControllerのプレゼンテーションをアニメーション化する情報ボタンを押すことができます。この例では、UITabBarControllerにはタブが1つしかなく、タブバーにはアイコンやタイトルが設定されていません。モーダルビューに入ると、ユーザーはバーの最初のタブをクリックすることができ、モーダルビューは閉じられます。

:(。これは、論理的に、あなたが最初以外のインデックスに開始するUITabBarControllerをお伝えしたいと思うことを意味します)

- (IBAction)infoButtonPressed 
{ 
    UIViewController *mainScreen = [[UIViewController alloc] init]; 
    NSArray *viewControllers = [[NSArray alloc] initWithObjects:mainScreen, nil]; 
    UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
    tabBarController.viewControllers = viewControllers; 
    //This means that "self" needs to implement the UITabBarControllerDelegate protocol 
    tabBarController.delegate = self; 
    [self presentModalViewController:tabBarController animated:YES]; 

    [mainScreen release]; 
    [viewControllers release]; 
    [tabBarController release]; 
} 

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    if (viewController == [tabBarController.viewControllers objectAtIndex:0]) { 
      [self dismissModalViewControllerAnimated:YES]; 
    } 
} 

を私は今、しかし、二段階の回転アニメーションに関する警告を取得しています

Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations. 
Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate 

予備調査によると、UIImageViewControllerを使用してメイン画面ビューの背景を表示していたためでしたが、それ以降はUIColor initWithPatternImageに変更しました。誰もが警告を取り除く方法を知っている - それを無視することさえ問題であれば?

0

紛らわしい(または少なくとも珍しい)ユーザーエクスペリエンスのように聞こえます。タブはアプリのメインナビゲーションレベルになると予想されます。

[OK]を(例えば好みのアプリ)セグメント化されたボタンやバックナビゲーションと垂直リスト内のセクションを示す

+0

最終的には正しいですが、別のデザインを追求する方が意味があるかもしれませんが、今のところこれがどのようになっているのかを見たいと思います。 – Chiubaka