2011-06-02 32 views
0

我已創建一個UIButton功能不打電話的時候,點擊鏈接

editButton = [[UIButton alloc]initWithFrame:CGRectMake(width, -4, 30, 30)]; 
     [editButton setImage:[UIImage imageNamed:@"DeleteButton.jpg"] forState:UIControlStateNormal]; 
     [editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside]; 
     editButton.hidden = YES; 
     [editButton setTag:tag]; 
     [backView addSubview:editButton]; 

但在將控制不能妄下它的定義在哪裏檢查按鈕給用戶點擊或不是它的標籤值。

-

(void)deleteObjectViewImage 
{ 

    NSInteger index = editButton.tag; 
    editButton.hidden = YES; 
} 

誰能告訴我,爲什麼它不能正常工作,請。

回答

1

使用該行,而不是在你的代碼(後函數名冒號去掉)線,

[editButton addTarget:self action:@selector(deleteObjectViewImage) forControlEvents:UIControlEventTouchUpInside]; 
+0

謝謝。有用。但我仍然沒有得到點擊按鈕的標籤值。它不是提供最後一個按鈕標籤值。 – Rahul 2011-06-02 10:25:28

+1

確保您爲兩個按鈕分配不同的標籤。 – 2011-06-02 10:31:29

+0

我剛剛創建editbutton並指定標籤(如您在第一個函數中所見)。「[editButton setTag:tag];」其中標籤值逐個遞增。並在另一個功能(刪除.....)我想存儲標籤值在索引中。但它不會返回單擊按鈕標記值。 – Rahul 2011-06-02 10:35:09

1
[editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside]; 

預計函數deleteObjectViewImage:有一個參數。但功能定義沒有任何。

UPDATE:

-(void)deleteObjectViewImage: (id) sender 
    { 
    UIButton *clickedButton = (UIButton *) sender; 
     NSInteger index = clickedButton.tag; 
     editButton.hidden = YES; 
    } 

,並使用

[editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside]; 
+0

但我也不想在調用time.And發送任何值我已經使用了相同的synatx其他Uibutton和它的工作proprerly。 – Rahul 2011-06-02 10:22:42

+0

然後不要使用「:」。只需使用[editButton addTarget:self action:@selector(deleteObjectViewImage)forControlEvents:UIControlEventTouchUpInside];正如iPhonePlayer – 2011-06-02 10:24:32

+0

所說,你能告訴我如何得到點擊按鈕的標記值而不是最後一個創建按鈕。 – Rahul 2011-06-02 10:28:08

0

爲了得到標記值您必須在Button Click事件中編寫此代碼...

-(IBAction)deleteObjectViewImage:(id)sender 
{ 
     UIButton *btn = (UIButton *)sender; 
     NSLog(@"%d",btn.tag); 
} 

不要

[editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside]; 
+0

嗨馬文,也許我不知道這一點,但我們可以有返回值作爲IBAction時,我們指定按鈕目標progamatically? – 2011-06-02 10:36:07

+0

它是'#define IBAction void'。預處理器將其更改爲「void」。 – 2011-06-02 10:37:58

0

去除結腸癌試試這個

editButton = [[UIButton alloc]initWithFrame:CGRectMake(width, -4, 30, 30)]; 
[editButton setImage:[UIImage imageNamed:@"DeleteButton.jpg"] forState:UIControlStateNormal]; 
[editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside]; 
editButton.hidden = YES; 
[editButton setTag:tag]; 
[backView addSubview:editButton]; 


- (void)deleteObjectViewImage:(id)sender 
{ 

    UIButton *button = (UIButton *)sender; 
    NSLog(@"Button tag is %d",button.tag); 
    button.hidden = YES; 
} 
+0

@Rahul:你可以從這個答案中得到按鈕的標籤.. – visakh7 2011-06-02 10:40:04

+0

UIButton * button =(UIButton *)sender; 在此行erroe genrate「發件人未在該範圍內聲明」。 – Rahul 2011-06-02 10:43:32

+1

發件人沒有聲明?你確定函數參數中的「發件人」和用於投入按鈕的拼寫相同嗎? – 2011-06-02 10:52:12