首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在UITableViewCell中单击Get按钮

在UITableViewCell中单击Get按钮
EN

Stack Overflow用户
提问于 2013-12-18 18:06:00
回答 10查看 224.5K关注 0票数 144

我有一个视图控制器,它有一个表格视图和一个用于表格单元格模板的单独的半边。单元格模板有一些按钮。我想要访问按钮单击以及在视图控制器中单击的单元格的索引,我在视图控制器中定义了Table视图。

所以我有ViewController.hViewController.m,其中有UITableViewTableTemplate.hTableTemplate.mTableTemplate.xib,其中我定义了nib。我想在ViewController.m中使用单元格索引的按钮单击事件。

我该怎么做,有什么帮助吗?

EN

回答 10

Stack Overflow用户

发布于 2014-07-30 18:54:26

我之所以喜欢下面的技巧,是因为它还能帮助我识别表格的哪个部分。

在单元格cellForRowAtIndexPath中添加按钮:

代码语言:javascript
复制
 UIButton *selectTaskBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        [selectTaskBtn setFrame:CGRectMake(15, 5, 30, 30.0)];
        [selectTaskBtn setTag:indexPath.section]; //Not required but may find useful if you need only section or row (indexpath.row) as suggested by MR.Tarun 
    [selectTaskBtn addTarget:self action:@selector(addTask:)   forControlEvents:UIControlEventTouchDown];
[cell addsubview: selectTaskBtn];

事件addTask:

代码语言:javascript
复制
-(void)addTask:(UIButton*)btn
{
    CGPoint buttonPosition = [btn convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    if (indexPath != nil)
    {
     int currentIndex = indexPath.row;
     int tableSection = indexPath.section;
    }
}

希望这能有所帮助。

票数 15
EN

Stack Overflow用户

发布于 2018-10-29 18:20:58

使用Swift闭包:

代码语言:javascript
复制
class TheCell: UITableViewCell {

    var tapCallback: (() -> Void)?

    @IBAction func didTap(_ sender: Any) {
        tapCallback?()
    }
}

extension TheController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: TheCell.identifier, for: indexPath) as! TheCell {
            cell.tapCallback = {
                //do stuff
            }
            return cell
    }
}
票数 15
EN

Stack Overflow用户

发布于 2014-03-28 00:29:31

塔伦的代码不能在iOS7上运行,因为UITableViewCell结构改变了,现在他得到的是"UITableViewCellScrollView“。

这篇文章Getting UITableViewCell with superview in iOS 7有一个很好的解决方案,创建一个循环来找到正确的父视图,而不管将来结构中的任何变化。它可以归结为创建一个循环:

代码语言:javascript
复制
    UIView *superView = [sender superview];
    UIView *foundSuperView = nil;

    while (nil != superView && nil == foundSuperView) {
        if ([superView isKindOfClass:[UITableViewCell class]]) {
            foundSuperView = superView;
        } else {
            superView = superView.superview;
        }
    }

该链接提供了一个更具可重用性的解决方案的代码,但这应该是可行的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20655060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档