2011-08-07 83 views
1

我已經創建了一個自定義tableviewcell通過接口生成器與標籤和按鈕。在.h和.m文件中,我已經爲我所連接的按鈕製作了插座和操作。 該單元格被添加到由uiviewcontroller類控制的tableview中。然而我的問題是,當我點擊按鈕時,按鈕沒有被激活,但是我被推到了屬於單元格的詳細視圖中。它看起來像按鈕在單元格後面。添加按鈕到uitableviewcell沒有響應

對於我忘記或應該改變的任何建議?

我已經創建了一個編程按鈕,並將其作爲子視圖添加到單元格中,而這可以工作,但是這會給我帶來另一個問題,因爲每次單元格加載時都會添加按鈕。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setFrame:CGRectMake(200.0f, 5.0f, 100.0f, 40.0f)]; 


//Set image 
UIImage *img = [UIImage imageNamed:@"myPackage.png"]; 
[button setImage:img forState:UIControlStateNormal]; 
[img release]; 


[button addTarget:self action:@selector(myPackagePushed:) forControlEvents:UIControlEventTouchUpInside]; 

[cell addSubview:button]; 

我真的很想使用界面生成器的方法 - 任何建議嗎?

Regards

回答

3

嘗試

[cell.contentView addSubview:button];

的UIImage * IMG = [UIImage的imageNamed:@ 「myPackage.png」];這裏你沒有分配內存,所以不需要

[img release];因爲有可能發生崩潰

1

該按鈕應激發您在IB中設置的IBAction方法。您是通過插入NSLog還是通過在輸入方法時設置斷點來進行檢查?

該按鈕是否設置爲在IB初始激活?

IB架構的關鍵是IBOutlet在從xib加載單元格時獲得它的值。然後IBOutlet將成爲tableview發生最後加載的單元格中的按鈕。

當您以編程方式添加按鈕時,您可能需要先將已添加的按鈕從removeSuperview中刪除,然後再次將按鈕添加到該單元格。

+0

好的,所以它可能只在最後一個單元格中,當使用界面構建器創建按鈕時,它實際上正在工作。我按照方法從超級視圖中刪除按鈕,然後再次添加,它的工作原理。這讓我感到很困惑,IB的方法如此困難。 – Bjarke

+0

實際上,在IB和編程添加的按鈕中,您都必須考慮如何檢測按下的tableviewcell。一種方法是將字典的按鈕對象作爲鍵和單元格的值作爲值。在IBAction動作中:(id)發送者,該字典被詢問值,其中關鍵字等於動作方法的發送者參數。 –

1

在我的情況下,問題是該按鈕是背景視圖的子視圖。

分配給背景視圖的按鈕顯然無法響應觸摸。