友達、
異なるヘッダーから 4 ~ 5 つのビューを切り替える必要があります
4 つのビューがあります。設定例 接続 オープン トレード クローズ トレード
これらは、クリックする 4 つのページ間を移動するヘッダーです
たとえば、他のすべてのビューと同様にクリックすると設定ビューに切り替えたいのですが、それらのボタンはすべてのビューにある必要があります
しかし、これらのボタンは1 つのビューだけで必要です。選択している間、他のビューに切り替える必要があります
友達、
異なるヘッダーから 4 ~ 5 つのビューを切り替える必要があります
4 つのビューがあります。設定例 接続 オープン トレード クローズ トレード
これらは、クリックする 4 つのページ間を移動するヘッダーです
たとえば、他のすべてのビューと同様にクリックすると設定ビューに切り替えたいのですが、それらのボタンはすべてのビューにある必要があります
しかし、これらのボタンは1 つのビューだけで必要です。選択している間、他のビューに切り替える必要があります
コンテンツの 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私は試していませんが、うまくいくはずです。
メイン コンテンツ ビューにセグメント化されたコントロールを追加します。次に、他のビューをセグメント化されたコントロールの下にサブビューとして追加します。(ビューがセグメント化されたコントロールと重ならないように、サブビューのフレームを設定します) 次に、各サブビューに 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];