2014-02-06 4 views
0

Я определение UIImageView вроде этого:Закрытие UIImageView с помощью тегов

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fondo1"]]; 

backgroundView.tag = 7; 

Тогда на другой метод, я пытаюсь закрыть UIView, используя следующий метод, который вызывается из кнопки действия:

-(void) closeSideTasks { 
    for (UIImageView *subview in [self.view subviews]) { 
     if (subview.tag == 7) { 
      [subview removeFromSuperview]; 
     } 
    } 
} 

Но это бросает исключение:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ToDoItemsTableViewController closeSideTasks:]: unrecognized selector sent to instance 

Где моя ошибка?

+0

Этот вопрос кажется не по теме, потому что это наиболее часто задаваемый вопрос программирования iOS, и вопросник не потрудился обнаружить этот факт. – matt

ответ

1

Похоже, вы вызываете метод с аргументом (обратите внимание, что closeSideTasks: точка с запятой) компилятор ожидает, что вы получите аргумент, но не найдете для этого метода. Определенный вами метод не принимает аргументы.

Если это селектор, который вы используете из действия кнопки, попробуйте определить его как - (IBaction) closesidetasks: (id) отправителя. И реализовать его как же.

+0

Спасибо, это работает, как вы сказали ... – mvasco

0

Используйте это вместо

-(void) closeSideTasks { 
       UIImageView * backgroundView = (UIImageView *)[self.view viewWithTag:7]; 
       [backgroundView removeFromSuperview]; 
    } 
+1

Неприменимо. Читайте, что он сказал ... – matt

1

ошибка, так как сообщение об ошибке ясно говорит вам, что ваша кнопка отправки closeSideTasks: даже если метод с именем closeSideTasks (без двоеточия).

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