2010-10-08 19 views
1

我似乎無法弄清楚如何做到這一點,希望這裏有人能幫助我。在我的tableview中,我想將複選框添加到每個單元格,如果觸摸該複選框,則會出現複選標記,並且應該發生特定操作。但如果你只是觸摸細胞,就會發生不同的動作。有沒有人有一個想法如何做到這一點?我開始做以下事情。但我認爲我的方法會造成內存泄漏,而且我不知道如何執行僅針對所有按鈕的按鈕的動作..... 如果有人能幫我解決問題,那將會很棒......iphone:如何將複選框添加到uitableviewcell?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

} 
NSArray *tempArray = [[exerciseNames objectAtIndex:indexPath.section] objectForKey:@"rowValues"]; 

UIButton *checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
checkButton.tag = indexPath.row; 
[checkButton setFrame:CGRectMake(10, 10, 23, 23)]; 
if (checkButtonPressed == YES) { 
    [checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
} 
else { 
    [checkButton setBackgroundImage:[[UIImage imageNamed:@"unchecked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
} 
[checkButton addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside]; 
[cell addSubview:checkButton]; 

cell.imageView.image = [UIImage imageNamed:@"unchecked.png"]; 
cell.textLabel.adjustsFontSizeToFitWidth = YES; 
cell.textLabel.text = [NSString stringWithFormat:@"%@ (%@)", [[tempArray objectAtIndex:indexPath.row] objectForKey:@"full"], [[tempArray objectAtIndex:indexPath.row] objectForKey:@"short"]]; 

// Set up the cell... 

return cell; 
} 

回答

-1

在Cocoa Touch中,UISwitch是與桌面UI上的複選框等效的UI範例。

您的checkAction處理程序可以檢查哪個控件調用它,並且只更改該控件。

1

我會嘗試繼承UITableViewCell並使每個單元格成爲按鈕操作的目標。這樣,當按下按鈕時,事件將由單元對象處理,而不是表格控制器。如果你不喜歡那樣,你可以嘗試使用你分配給按鈕的標籤來區分。要做到這一點,讓你的按鈕選擇是

checkAction:(UIButton *)_btn {} 

,當你添加目標,

[checkButton addTarget:self action:@selector(checkAction:) forControlEvents:UIControlEventTouchUpInside]; 

(注意:在@selector()結束)

我的天堂我沒有嘗試第二種方式,但我認爲它會起作用。

3

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:path]; 


     if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
      cell.accessoryType = UITableViewCellAccessoryNone; 
     } else { 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     } 

} 
+1

這個問題問的附加複選框在表格單元格,不會添加到UITableViewCellAccessoryCheckmark – NANNAV 2012-10-03 08:56:17