朋友们

我需要在不同标题的四到五个视图之间切换

有四个视图示例设置连接开放交易平仓交易

这些是我要在我单击的四个页面之间导航的标题

例如,当我单击所有其他视图时都想切换到设置视图,但是这些按钮必须在所有视图中

但我只需要一个视图中的这些按钮。当我选择它时,应该切换到其他视图

最佳答案

根据内容对四个视图的要求,我建议为分段控件创建一个主视图,并在该主视图中设置四个容器视图。它们中的三个应该被隐藏,然后您可以在四个视图之间切换(显示/隐藏)。

如果视图的代码非常“软”,或者同时运行4-5个视图会非常慢,那么这是一个很好的解决方案。如果是四个硬核视图,我宁愿使用标准的导航选项卡栏控件。

////////示例////////

设置将使用一个UIViewController作为背景。在此视图上,我们将放置一个UISegmentedControl +四个容器视图。四个容器视图应放在彼此的顶部。容器视图中的三个是隐藏的,因此您只能看到一个。

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我还没有尝试过,但是应该可以。

07-27 19:01