1

いくつかのボタンを表示する 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 メソッドを使用できますか?

ご協力いただきありがとうございます!!

4

1 に答える 1

1

もちろん、最初の viewController から 2 番目の 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...

于 2013-08-06T14:22:08.267 に答える