2013-08-06 38 views
1

我使用的是iCarousel,我在其中显示一些按钮。但是,如果点击按钮,我怎么能到另一个视图?如何从iCarousel中的按钮创建一个segue到另一个视图

我有这样的代码已经:

- (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

当然,您只需从第一个viewController拖动并创建一个segue到第二个,并将其命名为“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,并在[self performSegue..]发送sender而不是self作为发件人,并且在prepareForSegue..哪个按钮检查是发件人(或将您的NSInteger *index...一行放在此处)

+1

非常感谢您的工作得很好,但您可能表示的方法是performSegueWithIdentifier。 :) –

+0

哦,你是对的..我从来没有在Xcode中尝试过这些,我只是写了它。我甚至仔细阅读了几遍,以确保我没有得到任何错误。哦,好吧.. :)虽然接近。很高兴我能帮上忙! – Sti

相关问题