0

友達、

異なるヘッダーから 4 ~ 5 つのビューを切り替える必要があります

4 つのビューがあります。設定例 接続 オープン トレード クローズ トレード

これらは、クリックする 4 つのページ間を移動するヘッダーです

たとえば、他のすべてのビューと同様にクリックすると設定ビューに切り替えたいのですが、それらのボタンはすべてのビューにある必要があります

しかし、これらのボタンは1 つのビューだけで必要です。選択している間、他のビューに切り替える必要があります

4

2 に答える 2

0

コンテンツの 4 つのビューがどれほど要求が厳しいかに応じて、セグメント化されたコントロール用に 1 つのメイン ビューを作成し、メイン ビューに 4 つのコンテナー ビューを設定することをお勧めします。そのうちの 3 つは非表示にする必要があり、4 つのビューを切り替えることができます (表示/非表示)。

これは、ビューのコードが非常に「ソフト」であるか、4 ~ 5 個のビューを同時に実行すると非常に遅くなる場合にのみ有効なソリューションです。4 つのハードコア ビューの場合は、代わりに標準のナビゲーション タブ バー コントロールを使用することをお勧めします。

//////// 例 ////////

セットアップは、背景用の 1 つの UIViewController で行われます。このビューに、1 つの UISegmentedControl + 4 つのコンテナー ビューを配置します。4 つのコンテナー ビューを重ねて配置する必要があります。コンテナ ビューのうち 3 つが非表示になっているため、1 つだけが表示されます。

BackgroundViewController.h:

#import <UIKit/UIKit.h>

@interface BackgroundViewController : UIViewController {
    IBOutlet UISegmentedControl *segmentedControl;
    UIView actualView;
}

@property (nonatomic, weak) IBOutlet UIView *containerOne;
@property (nonatomic, weak) IBOutlet UIView *containerTwo;
@property (nonatomic, weak) IBOutlet UIView *containerThree;
@property (nonatomic, weak) IBOutlet UIView *containerFour;

@end

セグメント化されたコントロールの IBAction の例を次に示します。

- (void) viewDidLoad {
    actualView = self.containerOne;
    UIView *fromView = nil;
    UIView *toView = nil;

    self.containerOne.hidden = NO;
    self.containerTwo.hidden = YES;
    self.containerThree.hidden = YES;
    self.containerFour.hidden = YES;
}

- (IBAction)segmentSwitchClick {
    NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;

    UIView *fromView = actualView;
    UIView *toView = nil;

    switch (selectedSegment) {
        case 0: {
            toView = [self containerOne];
            break;
        } 
        case 1: {
            toView = [self containerTwo];
            break;
        }  
        case 2: {
            toView = [self containerThree];
            break;
        }  
        case 3: {
            toView = [self containerFour];
            break;
        }  
        default:
            break;
        }
    }
    [UIView transitionFromView:fromView toView:toView duration:1.9 options:UIViewAnimationOptionShowHideTransitionViews |  UIViewAnimationOptionCurveLinear
                completion:^(BOOL finished) {
                    if (finished) {
                        actualView = toView;
                    }
                }];

}

PS私は試していませんが、うまくいくはずです。

于 2015-05-25T10:21:39.537 に答える
0

メイン コンテンツ ビューにセグメント化されたコントロールを追加します。次に、他のビューをセグメント化されたコントロールの下にサブビューとして追加します。(ビューがセグメント化されたコントロールと重ならないように、サブビューのフレームを設定します) 次に、各サブビューに IBOutlet を設定します。セグメント化されたコントロールのアクション メソッドでは、選択されたセグメント化されたコントロールのインデックスに基づいてサブビューを表示および非表示にします。ビューを表示する必要がある場合は、他のサブ ビューを非表示にします。

これは単純明快な解決策です

以下は、viewcontroller のスーパー ビューに 3 つのビューを追加するサンプル コードです (未テスト)。

CGRect frame = CGRectMake(x, y, width, height); // Replacing with your dimensions
UIView *view1 = [[UIView alloc] initWithFrame:frame];
UIView *view2 = [[UIView alloc] initWithFrame:frame];
UIView *view3 = [[UIView alloc] initWithFrame:frame];

Then, you want to actually add it to the superview (assuming the view is self.view)

[self.view addSubview:view1];
[self.view addSubview:view2];
[self.view addSubview:view3];
于 2015-05-25T10:30:22.970 に答える