2013-07-24 2 views
1

Я реализовал 2 ImageViews с изображениями и tapGestures, это прекрасно работает, теперь я хочу переходить к другому ViewController, в зависимости от того, какое изображение я использовал. Я не знаю, как я должен объявить свой ImageView, какой ViewController должен вызвать.Как я могу программно переключаться при нажатии на изображение?

так мой код:

-(void) initImageViews{ 
self.navigationItem.title = @"Menu"; 
UIImage *serviceImage = [UIImage imageNamed:@"Service.png"]; 
self.serviceImageView = [[UIImageView alloc] initWithImage:serviceImage]; 
[self.serviceImageView setFrame:CGRectMake(20, 20, 48,48)]; 
[self.view addSubview:self.serviceImageView]; 
[self.view setBackgroundColor:[UIColor blackColor]]; 

UIImage *industryImage = [UIImage imageNamed:@"Industry.png"]; 
self.industryImageView = [[UIImageView alloc] initWithImage:industryImage]; 
[self.industryImageView setFrame:CGRectMake(73,20,48,48)]; 
[self.view addSubview:industryImageView]; 
    UITapGestureRecognizer *singleTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 

    [self.industryImageView setUserInteractionEnabled:TRUE]; 
    [self.serviceImageView setUserInteractionEnabled:TRUE]; 
    [self.serviceImageView addGestureRecognizer:singleTap]; 
    [self.industryImageView addGestureRecognizer:singleTap]; 

} 

    - (void)handleSingleTap:(UITapGestureRecognizer *)gestureRecognizer { 

NSLog(@"Tapped!"); 

} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
if ([segue.identifier isEqualToString:@"Service"]) { 
    SelectOptionViewController *controller = (SelectOptionViewController*)segue.destinationViewController; 
}if ([segue.identifier isEqualToString:@"Industry"]) { 
    SelectOptionViewController *controller = (SelectOptionViewController*)segue.destinationViewController; 
} 
} 

} 

Заранее спасибо :)

ответ

1

Создайте seague в раскадровке с identifier.then программно вызвать SEGUE как этот

[self performSegueWithIdentifier: @"myidentifier" sender: self]; 
+0

Хорошо, но как я могу сделать разницу между моими 2 ImageViews? , например. if (image == IndustryViewImage) call View1 else call View2 – user2019219

+0

да, у вас может быть выход для обоих и сделать это –

+0

Спасибо, теперь я узнал, что singleTap работает только для одного изображения, поэтому я попытался инициализировать и добавить новый gestureRecognizer, но Я думаю, что это не может быть правильным способом? – user2019219

2
[self performSegueWithIdentifier:IdentifierForTheSegueiFromStoryBoard sender:nil]; 

РЕДАКТИРОВАТЬ: сека должна существовать в раскадровке и должна иметь идентификатор.

2

Если вы не хотите/нужно использовать перетекает вы могли бы использовать:

if (i want controller A) { 
    [self presentViewController:ControllerA animated:YES completion:nil]; 
} else if (i want controller B) 
    [self presentViewController:ControllerB animated:YES completion:nil]; 
}