1

我有一个带有五行和一个按钮的 UitableView。我设法为一行创建了复选标记,我的意思是用户只能检查一行。当检查另一行时,前一个未选中。现在有人可以帮助我将我的按钮与行的选择联系起来。我尝试了一些东西但没有工作。

这是我在 cellForRowAtIndexPath 中的代码:

if([self.checkedIndexPath isEqual:indexPath])
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
}

和我的按钮代码:

if (reloadSelectedRow==1) {

   PlayViewController * controller = [[PlayViewController alloc] initWithNibName:@"PlayViewController" bundle:nil];
    //controller.countdownLabel.text= score;
    [self presentViewController:controller animated:YES completion:nil];
}

}

reloadSelectedRow 是一个 int 变量,我创建它 .h 并在 didSelectRowAtIndexPath 中使用它:

reloadSelectedRow = [[NSNumber alloc] initWithInteger:indexPath.row];

问题是当我按下按钮时没有任何反应。先感谢您。

4

2 回答 2

3
[YourButton addTarget:self action:@selector(ButtonPressed:) forControlEvents:UIControlEventTouchDown];

您可以像这样获得按下按钮的 superView 和索引路径:

 -(void)ButtonPressed:(id)sender
{    

    //Get the superview from this button which will be our cell
    UITableViewCell *owningCell = (UITableViewCell*)[sender superview];
    NSIndexPath *pathToCell = [tableView indexPathForCell:owningCell];

}
于 2013-09-15T10:45:03.973 回答
1

对于快速版本。我为每一行做了多项选择答案。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "PersonalTestTC", for: indexPath) as! PersonalTestTC

    cell.questionTitle.text = "some question here"

    cell.choiceButton1.addTarget(self, action: #selector(self.choiceButtonPress), for: .touchUpInside)
    cell.choiceButton2.addTarget(self, action: #selector(self.choiceButtonPress), for: .touchUpInside)
    cell.choiceButton3.addTarget(self, action: #selector(self.choiceButtonPress), for: .touchUpInside)
    cell.choiceButton4.addTarget(self, action: #selector(self.choiceButtonPress), for: .touchUpInside)
    cell.choiceButton5.addTarget(self, action: #selector(self.choiceButtonPress), for: .touchUpInside)

    cell.choiceButton1.tag = 1
    cell.choiceButton2.tag = 2
    cell.choiceButton3.tag = 3
    cell.choiceButton4.tag = 4
    cell.choiceButton5.tag = 5

    return cell

}

使用标签来获取选择了哪一行和哪个答案来识别

func choiceButtonPress(sender: UIButton){

    let tbcell : UITableViewCell = sender.superview?.superview as! UITableViewCell
    let getCell : IndexPath = testListTable.indexPath(for: tbcell)!

    print(getCell.row)
    print(sender.tag)

}

对于 superview ,这取决于您在 UIButton 上的位置。

于 2017-06-29T04:00:39.923 回答