2011-09-12 120 views
1

我試圖添加按鈕,進入我的表格單元格象下面這樣:添加按鈕到的UITableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
.... 
UIButton* buttonCheckbox = [UIButton buttonWithType:UIButtonTypeCustom]; 
     buttonCheckbox.frame = CGRectMake(0, 177, 56, 26); 
     buttonCheckbox.backgroundColor = [UIColor redColor]; 
     [buttonCheckbox addTarget:self action:@selector(actionFirst1) forControlEvents:UIControlEventTouchUpInside]; 


     [buttonCheckbox setTitle:@"MyTitle" forState:UIControlStateNormal]; 

     [cell addSubview:buttonCheckbox]; 

但actionFirst1事件不被解僱。如果我添加按鈕[self.view addSubview:buttonCheckbox]而不是[cell addSubview:buttonCheckbox]它工作正常。爲什麼?

感謝...

+0

通常你的操作方法將有一個sender參數(ID),在這種情況下,選擇將是'@selector(actionFirst1:)' – progrmr

回答

1

嗨更多信息嘗試下面的代碼,它可以幫助您解決:

if ([indexPath row] == 0) 
    { 
        UIButton *myButton = [[UISwitch alloc]initWithFrame:CGRectMake(x, y, width, 
             heigth)]; 
     [cell addSubview:myButton]; 
     cell.accessoryView = myButton; 
     [myButton addTarget:self action:@selector (actionFirst1) 
            forControlEvents:UIControlEventTouchUpInside]; 
      } 

此代碼對您會有幫助。請根據您的TableView的單元格設置框架。

+0

,它會導致幀位置。如果我設置CGRectMake(0,157,56,26);有用。但爲什麼? – ysnky

+0

如果單元格內的按鈕工作,否則它不起作用 – ysnky

2

您應該添加該按鈕,您的電池的contentView財產

[cell.contentView addSubview:buttonCheckbox]; 

事實上,UITableViewCell裏面所有的自定義元素應放在contentView內側,該小區元素(contentView,accessorViewimage)都放置在您的單元格所具有的任何元素的頂部。

檢查this doc對細胞有關自定義UITableviewCell

+0

我已經嘗試過了,沒有工作 – ysnky

+0

你可以把代碼爲你的選擇'actionFirst1'?如果它有一個參數,比如' - (void)actionFirst1:(UIButton *)sender',它不會起作用,因爲我發現沒有任何參數 –

1

請查看添加按鈕作爲表格單元的附件視圖是否夠用。在這種情況下,iOS框架會將按鈕放置在您的單元格樣式本身的正確位置(儘管您仍然需要給它一個大小)。以下是我的一個項目的示例:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.frame = CGRectMake(0, 0, 100, 27); // only size matters 
[myButton setTitle:@"Connect" forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(connect:) forControlEvents:UIControlEventTouchUpInside]; 
cell.accessoryView = myButton; 

就是這樣。您只需創建控件,確保它具有大小,然後將其設置爲accessoryView。