如何在UITableViewCell中使用Button进行操作? [英] How to do action using Button in UITableViewCell?
问题描述
我有一个我在CustomCell中创建的按钮。
i have a button that i create in my CustomCell.
- (IBAction)onoffBtn:(id)sender
{
UIButton *button = (UIButton *)sender;
button.selected = !button.selected;
if (button.selected)
{
// Do action 1
}
else
{
// Do action 2
}
}
当我运行它时,按钮显示在我的单元格里面我在TableViewController中创建的UITableView。我可以在我的单元格中按下onoffBtn,但它无法做出动作。我如何才能使我的按钮可以执行操作?
When i run it, the button is show in my cell inside UITableView that i create in TableViewController. I can press that onoffBtn inside my cell but it cant do action. How do i do so that my button can do action?
这是我的TableViewController.m中的cellForRowAtIndexPath
this is my cellForRowAtIndexPath inside my TableViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:[CustomCell reuseIdentifier]];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = _customCell;
_customCell = nil;
}
// Show my cell
return cell;
}
以及其他问题,我应该在哪里写do process?在我的TableViewController.m或我的CustomCell.m中?如果你不介意,请提供代码和解释,我在这里新的,仍在学习。我想了解你编写的每一行代码。谢谢。
and for other question, where should i write for do process at? inside my TableViewController.m or my CustomCell.m? if you dont mind, please provide me with code and explanation, im new in here and still learning. i want to understand in every line of code that you write. Thank you.
更新:
到目前为止,这是我在TableViewController.m中的cellForRowAtIndexPath:
This is my cellForRowAtIndexPath inside TableViewController.m so far:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:[CustomCell reuseIdentifier]];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = _customCell;
_customCell = nil;
}
button.tag = indexPath.row;
cell.titleLabel.text = [titleArray objectAtIndex:indexPath.row];
cell.timerLabel.text = [timeArray objectAtIndex:indexPath.row];
time = [[secondArray objectAtIndex:indexPath.row] integerValue];
NSLog(@"Title %@, time %@, second %@, time %i, tag %d", titleArray, timeArray, secondArray, time, button.tag);
return cell;
}
这是日志说:
2012-08-04 17:38:36.257 Table[1269:f803] Title (
"Test 1",
"Test 2"
), time (
"10 secs",
"5 secs"
), second (
10,
5
), time 10, tag 0 // tag 0 for cell 1
2012-08-04 17:38:36.261 Table[1269:f803] Title (
"Test 1",
"Test 2"
), time (
"10 secs",
"5 secs"
), second (
10,
5
), time 5, tag 0 // tag should be 1 for cell 2 but it said 0. How to fix it?
推荐答案
这就是你如何在A中采取行动添加按钮CELL
THIS IS HOW YOU ADD BUTTON WITH AN ACTION IN A CELL
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// ADDING A BUTTON WITH TARGET
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundRect];
btn.frame = CGRectMake(0, 0, 50, 50);
btn.showsTouchWhenHighlighted = YES;
btn.tag = indexPath.row;
[btn addTarget:self action:@selector(onoffBtn:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:btn];
return cell;
}
- (IBAction)onoffBtn:(id)sender
{
UIButton *button = (UIButton *)sender;
button.selected = !button.selected;
if (button.selected)
{
// Do action 1
}
else
{
// Do action 2
}
}
这篇关于如何在UITableViewCell中使用Button进行操作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!