2013-08-10 2 views
1

У меня есть контроллер просмотра с обычным представлением. С этой точки зрения у меня есть 4 подвыбора. Мне нужно, чтобы каждый реагировал на UISwipeGestureRecognizer. Я подключил представления к UISwipeGestureRecognizer в Interface Builder и подключил UISwipeGestureRecognizer к IBAction. Все отлично работает; все они реагируют на UISwipeGestureRecognizer.Приложить UISwipeGestureRecognizer к нескольким представлениям

Но, мне нужно действие, чтобы сделать что-то другое, в зависимости от того, какой вид называется IBAction. Что мне делать? Вот IBAction код:

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

Как мне справиться с этим?

ответ

0
- (IBAction)swipe:(UISwipeGestureRecognizer *)sender 
{ 
    if (sender.view == view1) { 
     //do something 
    } 
    if (sender.view == view2) { 
     //do something 
    } 
    if (sender.view == view3) { 
     //do something 
    } 
} 

Не усложнять то, что просто. Кроме того, использование тегов заставит вас определять те же теги в другом наконечнике, если вы хотите повторно использовать один и тот же контроллер с другим наконечником, что является плохим дизайном.

+0

Я не согласен. Я думаю, что хуже дизайн для ненужного использования ссылок на некоторые взгляды для сравнения с отправителем. Особенно, если упомянутые представления уже имеют свойство, встроенное в них, которое может использоваться, чтобы рассказать им обособленно. –

+0

Что именно не так с сохранением ссылок? ОС управляет всем этим для вас, пока у вас есть что-то правильно настроенное. –

1

Я бы присвоил тег каждому из видов. Таким образом, вы все равно можете использовать оператор switch, чтобы рассказать об этом отдельно, но без необходимости ссылаться на каждую точку зрения. 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; 
    } 
} 
+0

@ Ox7fffffff - Это не сработало. Отправитель, похоже, не имеет тега. –

+0

@ Кодирование Вправо, но просмотр прикреплен к отправителю _can_ есть. Вы должны вручную назначить их в Interface Builder. –

+0

Сделал это. 'default: вызывается NSLog (@" 4 ");'. –

Смежные вопросы