如何从UITableView调用UITableViewCell中的添加目标按钮功能?

时间:2016-05-03 11:22:02

标签: ios swift uitableview

我在UITableViewCell类中动态创建了几个按钮,如下所示:

for (clientObjectId, _) in connectedObjectIds {
    self.clientNameButton = UIButton(type: UIButtonType.System) as UIButton
    self.clientNameButton.titleLabel?.lineBreakMode = NSLineBreakMode.ByTruncatingTail
    self.clientNameButton.frame = CGRectMake(self.leftSideSpaceForUsersAndUserLabel, clientNameButtonFrameHeight, self.nameButtonWidth, self.nameButtonHeight)
    self.clientNameButton.setTitle(self.userObjectIdsAndNames[clientObjectId], forState: UIControlState.Normal)
    self.clientNameButton.titleLabel!.font = UIFont(name: "Helvetica", size: 12.0)
    self.clientNameButton.addTarget(self, action: "asdf:", forControlEvents: UIControlEvents.TouchUpInside)
    self.nameButtons.append(self.clientNameButton)
    self.addSubview(self.clientNameButton)
}

我想在我的UITableView类中调用以下函数:

func asdf(sender:UIButton) {
     print("Button tapped")
}

我正在考虑使用protocal从我的UITableView类接收asdf()函数调用。但是有更好的方法吗?

修改

可能的重复之间的区别在于addTarget出现在UITableView委托函数的UITableView类中。但是,我在委托函数中没有addTarget,而是在我的UITableViewCell中。我已经阅读了那篇帖子,它确实解决了我的问题。这就是我在这里用另一篇文章提出来的原因。

另外,其他可能的重复是我的问题。我在那篇文章中问过这个问题,但是在一篇文章中提出了两个问题,所以我决定发布这篇文章,这样我就不会在一篇文章中提出两个问题。

1 个答案:

答案 0 :(得分:1)

试试这段代码,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell Identifier";

    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.playButton.tag = indexPath.row
    cell.playButton.addTarget(self, action: Selector("buttonPressed:"), forControlEvents: .TouchUpInside)
    return cell;

}

动作:

func buttonPressed(sender:UIButton!) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let controller = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! PlayViewController
        self.navigationController?.pushViewController(controller, animated: true)
    }

希望它有用