2014-02-06 75 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)sender。 並以相同的方式實施。

+0

謝謝,它按照你說的那樣工作... – mvasco

0

使用這個代替

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

無關緊要。讀他說的話...... – matt

1

的錯誤,因爲錯誤信息明明白白告訴你,那是你按鍵發送closeSideTasks:即使該方法被命名爲closeSideTasks(沒有冒號)。