Reputation: 2989
I have a View Controller with a normal View. In that view, I have 4 sub views. I need each one to react to a UISwipeGestureRecognizer
. I hooked the views to the UISwipeGestureRecognizer
in Interface Builder and hooked the UISwipeGestureRecognizer
to an IBAction
. It all works great; they all react to the UISwipeGestureRecognizer
.
But, I need the action to do something different, depending on what view called the IBAction
. What should I do? Here's the IBAction
code:
- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
switch (view)
{
case view1:
//do something
break;
case view2:
//do something
break;
case view3:
//do something
break;
default:
//do something
break;
}
}
How should I handle this?
Upvotes: 1
Views: 132
Reputation: 118
- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
if (sender.view == view1) {
//do something
}
if (sender.view == view2) {
//do something
}
if (sender.view == view3) {
//do something
}
}
Don't complicate what is simple. Besides, using tags will force you to define the same tags in another nib if you want to reuse the same controller with another nib, that is bad design.
Upvotes: 0
Reputation: 130183
I would assign a tag to each of the views. That way, you can still use your switch statement to tell them apart, but without having to keep a reference to each view. E.x:
- (IBAction)tapSignature:(UISwipeGestureRecognizer *)sender
{
NSLog(@"swiped");
switch (sender.view.tag)
{
case 1:
NSLog(@"1");
break;
case 2:
NSLog(@"2");
break;
case 3:
NSLog(@"3");
break;
default:
NSLog(@"4");
break;
}
}
Upvotes: 1