1

ビューを変更するために、UITabBar コントローラーの代わりにセグメント化されたコントロールを使用したいと考えています。それはHIGに準拠していますか?

はいの場合、どうすればできますか? プロジェクトにどのテンプレートを使用し、どのコードを使用すればよいですか?

4

2 に答える 2

6

セグメント化されたコントロールを使用してビューを変更する Apple アプリがいくつかあります。iTunes、App Store アプリ、YouTube アプリです。ただし、それらはすべて画面の上部でそれを使用し、セグメント化されたコントロールと組み合わせて使用​​ します。マップ アプリは画面下部に 1 つを使用しますが、考え方はタブ バーとは異なります。カレンダー アプリも、リスト、日、月のビュー (下部のツールバー) に 1 つを使用します。

経験則として、同じ種類のデータの異なるビューを提供する場合は、セグメント化されたコントロールを使用できると思います。表示しているものに関連性がない場合は、タブ バーを使用する必要があります。セグメント化されたコントロールを使用することでアプリが拒否されることはおそらくありませんが、非標準的な方法で使用すると、ユーザーは少し混乱するでしょう。

サンプル コードについてはよくわかりませんが、最も近いのは "Top Songs" サンプルです。これはビューを交換するのではなくFetchedResultsController、セグメントがクリックされたときに変更するだけです。

SOに関する別の質問はほとんど同じです:

UISegmentedControl を使用してビューを切り替えるにはどうすればよいですか?

于 2010-04-09T23:42:13.427 に答える
1

これが私がやった方法です:

-(IBAction)segmentedControlIndexChanged{
switch (self.segmentedControl1.selectedSegmentIndex) {
    case 0:
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details0];
        break;
    case 1:
        [details2 removeFromSuperview];
        [details0 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details1];
        break;
    case 2:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details3 removeFromSuperview];
        [details addSubview:details2];
        break;
    case 3:
        [details0 removeFromSuperview];
        [details1 removeFromSuperview];
        [details2 removeFromSuperview];
        [details addSubview:details3];
        break;
    default:
        break;
}
}

IB のセグメント化されたコントロールの valueChanged メソッドをこの IBAction にバインドしていることを確認してください。

于 2011-08-22T09:53:27.650 に答える