0

この質問の言い回しがちょっと変なのはわかっていますが、私がやろうとしていることを説明させてください。

それぞれ独自のビューを持つ 2 つのタブを持つアプリがあるとします。どちらのビューもほぼ同じですが、一方にはボタンが 1 つまたは 2 つ含まれていて、もう一方には含まれていません。

ストーリーボード モードで既に 1 つのビューを作成しましたが、少しだけ変更して、同じビューをもう 1 つのタブで再利用したいと考えています。

1 つを変更すると、もう 1 つを変更する必要があり、2 つの間に矛盾が生じる可能性があるため、ディープ コピーは行いたくありません。

では、複数のタブで同じ一般的なビューを使用するにはどうすればよいでしょうか。現在のタブに応じて、それについて少し変更するだけでよいでしょうか?

ユニバーサル コンテンツをストーリーボード ビューに追加してから、特定のタブ専用コンテンツをプログラムで追加する必要がありますか? これを行うと、どのタブが選択されているかを検出する方法が必要になりますよね? それを行う方法はありますか?

ご提案ありがとうございます。

4

1 に答える 1

1

そのためのストーリーボードは必要ありません。そこにビューをドラッグして特定のクラスに割り当て、その中のすべてのものをプログラムすることはできますが、本当にビューが 1 つしか必要ない場合は、ストーリーボードは役に立ちません。何かを変更したい場合は、サブビューをプログラムで処理する必要があります。これは非常に優れており、次のような優れた機能がありますanimationWithDuration:

UITabBarController のどのタブが選択されているかを確認するには、選択さself.tabBarController.selectedIndexれているタブの特定のインデックスを使用して比較できます。

編集:

タブにインデックス 0 の緑色のボタンがあり、同じボタンが少し上にスライドし、インデックス 1 のタブがタップされたときに緑色のボタンの場所に赤いボタンが表示されると仮定します。

UIButton *greenButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 320, 100, 20)];
    greenButton.backgroundColor = [UIColor greenColor];
    [self.view addSubview:greenButton];


    UIButton *redButton = [[UIButton alloc] initWithFrame:CGRectMake(0, greenButton.frame.origin.y, 100, 20)];
    greenButton.backgroundColor = [UIColor redColor];

    if (self.tabBarController.selectedIndex == 1) {
        [UIView animateWithDuration:1.0 animations:^{
            greenButton.frame = CGRectMake(0, 300, 100, 20);
        } completion:^(BOOL finished) {
            [self.view addSubview:redButton];
        }];
    }

最初に 2 つのボタンを作成し、緑色のボタンをビューに追加します。(最初のビューはインデックス 0 にあります)。次に、selectedIndex が 1 であるかどうかを確認し、ボタンをアニメーション化します。

于 2013-07-20T20:38:42.107 に答える