如何从 iCarousel 中的按钮创建到另一个视图的转场

Posted

技术标签:

【中文标题】如何从 iCarousel 中的按钮创建到另一个视图的转场【英文标题】:How to create a segue to another view from a button in iCarousel 【发布时间】:2013-08-06 13:53:22 【问题描述】:

我正在使用 iCarousel 来显示一些按钮。但是当点击按钮时我如何进入另一个视图?

我已经有了这个代码:

    - (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
    
        return 10;
    

    - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
    
        UIButton *button = (UIButton *)view;
        if (button == nil)
        
            UIImage *image = [UIImage imageNamed:@"page.png"];
            button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.frame = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
            [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
            [button setBackgroundImage:image forState:UIControlStateNormal];
            button.titleLabel.font = [button.titleLabel.font fontWithSize:50];
            [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
        

        return button;
    

  - (void)buttonTapped:(UIButton *)sender
    
        NSInteger index = [carousel indexOfItemViewOrSubview:sender];

        //Action
    

点击按钮后如何进入另一个视图?我也可以在这里使用 prepareForSegue 方法吗?

感谢您的帮助!!

【问题讨论】:

【参考方案1】:

当然,您只需将 segue 从第一个 viewController 拖到第二个,然后将其命名为“segue0”。

-(void)buttonTapped:(UIButton*)sender

    NSInteger *index = [carousel indexOfItemViewOrSubview:sender];
    if(index = 0)
    
        [self performSegueWithIdentifier:@"segue0", sender:self];
        
    //else if etc.., or better yet, ditch the if, do the checking in 'prepare' as explained below


-(void)prepareForSegue:(UIStoryboardSegue*) segue sender:(id)sender

    YourNextViewController *nextView = [segue destinationViewController];
    //Do stuff to your next view with "nextView"


如果他们都去同一个viewController,但是通过在prepareForSegue中发送不同的数据,那么你可以放弃if-statement,并发送sender而不是self作为[self performSegue..]中的发送者,并检查在prepareForSegue.. 中哪个按钮是发件人(或将您的NSInteger *index... 行移到此处)

【讨论】:

非常感谢你的工作非常好,但你的意思可能是 performSegueWithIdentifier。 :) 哦,你是对的.. 我从来没有在 Xcode 中尝试过这些,我只是用心写的。我什至把它读了几遍,以确保我没有弄错任何东西。哦,好吧.. :) 关闭。很高兴我能帮上忙!

以上是关于如何从 iCarousel 中的按钮创建到另一个视图的转场的主要内容,如果未能解决你的问题,请参考以下文章

如何为 icarousel 中的每个按钮创建单独的操作?

iCarousel 配置任务

从 segued View 返回时如何重新加载 iCarousel?

[ViewPager - 如何使用按钮从一个页面导航到另一个页面?

Segue 和 Button 以编程方式快速

索引iCarousel中UIView的多选