iphone - 从 ScrollViewController 内容 View 导航到堆栈上的另一个 View

标签 iphone ios uiviewcontroller navigation

我正在尝试使用 UIButton 从 UIScrollView 的内容 View 导航到另一个 View 。我不想以模态方式显示另一个 View ,并且将 View 推送到堆栈上对我来说不起作用。

示例: 我的 View Controller 包含一个具有 2 个内容 View 的 ScrollView 。在这些内容 View 中,我想将另一个 View 插入堆栈。

我想做的事情可能吗?

最佳答案

好吧,让我们看看我是否足够理解您的问题。

@interface MyViewController ()
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIView *firstPlayerView;
@property (nonatomic, strong) UIView *secondPlayerView;
@end

@implementation MyViewController

-(UIView *)firstPlayerView
{
    if (!_firstPlayerView) {
        _firstPlayerView = [[UIView alloc] initWithFrame:self.view.bounds];
        // set up your view as you like and place the button to go to the second player
        // view when you need to.
        // let's suppose that you called that button "goToSecondPlayerViewButton"
        [goToSecondPlayerViewButton addTarget:self
                                       action:@selector(switchPlayer) 
                             forControlEvents:UIControlEventTouchUpInside];
    }
    return _firstPlayerView;
}

-(UIView *)secondPlayerView
{
    if (!_secondPlayerView) {
        _secondPlayerView = [[UIView alloc] initWithFrame:CGRectOffset(self.view.bounds, self.view.bounds.size.width, 0)];
        // set up your view as you like and place the button to go to the first player
        // view when you need to.
        // let's suppose that you called that button "goToFirstPlayerViewButton"
        [goToFirstPlayerViewButton addTarget:self
                                      action:@selector(switchPlayer) 
                            forControlEvents:UIControlEventTouchUpInside];
    }
    return _secondPlayerView;
}

-(UIScrollView *)scrollView
{
    if (!_scrollView) {
        _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
        _scrollView.autoresizingMask = UIViewAutoresizingNone;
        [_scrollView addSubview:self.firstPlayerView];
        [_scrollView addSubview:self.secondPlayerView];
        _scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height);
        _scrollView.pagingEnabled = YES;
        _scrollView.scrollEnabled = NO;
        _scrollView.bounces = NO;
        _scrollView.showsVerticalScrollIndicator = NO;
        _scrollView.showsHorizontalScrollIndicator = NO;
    }
    return _scrollView;
}

-(void)switchPlayer
{
    if(self.scrollView.contentOffset.x == 0) {
        [self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height) animated:YES];
        self.title = @"Second Player";
    } else {
        [self.scrollView scrollRectToVisible:self.scrollView.bounds animated:YES];
        self.title = @"First Player";
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.view addSubview:self.scrollView];
    self.title = @"First Player";
}

@end

希望能解决您的问题!我尚未测试代码,因此如果您遇到问题,请发表评论,我会尽力提供帮助。

编辑:要添加 View ,您只需放大 ScrollView contentSize 并将该 View 添加为其 subview

-(UIView *)thirdView
{
    if (!_thirdView) {
        _thirdView = [[UIView alloc] initWithFrame:CGRectOffset(self.view.bounds * 2, self.view.bounds.size.width, 0)];
        // set up your view as you like 
    }
    return _thirdView;
}

-(void)addThirdView
{
    self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width * 3, self.scrollView.bounds.size.height);
    [self.scrollView addSubview:self.thirdView];
    [self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.bounds.size.width * 2, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height) animated:YES];
}

您可以概括这一点并首先设置内容大小,然后使用一个将索引作为参数的方法。

-(void)scrollToViewAtIndex:(NSInteger)index
{
    [self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.bounds.size.width * index, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height) 
                                animated:YES]; 
}

关于iphone - 从 ScrollViewController 内容 View 导航到堆栈上的另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755085/

相关文章:

ios - 当单元格被选中时,按钮的背景颜色会改变然后恢复

ios - 在 segue 期间从 UINavigationController 的导航堆栈中删除 View Controller ?

iOS 从另一个类/线程更新 UI

iphone - 回声效果 : Write audio buffers with offset?

ios - 在 UITabBarController 中选择不同的选项卡时如何添加不同颜色的下划线

iphone - iOS : cannot delete file

iphone - OpenGL ES/iOS/Cocos2d 中的叠加颜色混合

iphone - 如何在 iOS 中动态创建表单

objective-c - 将字符串中的数据存储到整数数组中

ios - 如何将数据从导航栏上的右键传输到另一个 ViewController?