Ios 在Swift 3.0中,将UIButton分层到UILabel上是否合适?

Ios 在Swift 3.0中,将UIButton分层到UILabel上是否合适?,ios,swift,uitableview,uibutton,uilabel,Ios,Swift,Uitableview,Uibutton,Uilabel,我的问题是:在Swift 3语言中,以下这种使UILabel tap-sensitive在风格上可以接受的方法吗?我很想说“如果它编译了它就会飞”,但如果它以后要咬我,我不想养成使用这个“捷径”的习惯。此外,如果可以接受,使用这种方法是否存在一些对我这样的新手来说不明显的缺点 请注意,我不是在寻找一种实现代码的方法,我有一种。我在问,从语言风格的角度来看,我的解决方案是否可以接受 我已经试着让UILabel在表单元格中接受TapSignature两天了,无论我尝试什么方法,即使它会编译,也总是

我的问题是:在Swift 3语言中,以下这种使UILabel tap-sensitive在风格上可以接受的方法吗?我很想说“如果它编译了它就会飞”,但如果它以后要咬我,我不想养成使用这个“捷径”的习惯。此外,如果可以接受,使用这种方法是否存在一些对我这样的新手来说不明显的缺点

请注意,我不是在寻找一种实现代码的方法,我有一种。我在问,从语言风格的角度来看,我的解决方案是否可以接受


我已经试着让UILabel在表单元格中接受TapSignature两天了,无论我尝试什么方法,即使它会编译,也总是会出现某种错误。凭直觉,我来到我的故事板查看表格视图,并在原型单元的顶部添加了一个按钮(没有堆叠、对齐或诸如此类——实际上占据了故事板上相同的2D空间)。我删除了按钮文本,将其链接到表视图单元格代码,并实现了一些基本功能,将UILabel上的文本更改为红色和背面。所有这些功能都与我预期的完全相同。我单击按钮,文本从黑色变为红色,再次单击时返回。UILabel文本在白色背景的表格单元格中是静态的,我的实际函数不会更改文本,它将通过从该视图委派来更改另一个视图


为什么要这样做?即使我选中UILabel use interaction(UILabel使用交互)框并按照此处的其他一些问题和答案进行操作,使其能够点击,我也无法控制并将UILabel拖到table view(表格视图)单元格并执行操作,下拉菜单中根本不存在该选项。如果我按住control键并将UILabel拖动到“表视图”控制器,则该选项可用。这对我来说是有意义的,因为它是感知触摸的表视图控制器(对吗?)。但是,另一方面,我在表视图单元格中有一个开关,当我按照答案进行操作时,它可以正常工作。故事板代码交互(控制+拖动)的简单功能阻止我得到我想要的东西。也许控制+拖动应该允许我做一个动作,而不是?我不知道。我不想单独使用UIButton,因为UILabel的文本缩放功能非常方便。

如果您只想识别表格单元格上的点击,请将该类作为表格视图的委托

tableView.delegate = self
实施

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        //your code here
    }
我也希望您能抽出时间阅读更多有关UITableView的内容。每个UITableViewCell本身都有一个标签。考虑下面的代码:

tableView.dataSource = self // this code will ideally be in init

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "lovCell")
        cell.textLabel?.text = dummyData[indexPath.row]
        return cell
    }

研究UILabel中支持链接检测和用户交互的开源子类,例如,ETC您的问题与Swift 3有什么关系?无论您使用的是Swift 2、Swift 3、Objective-C还是其他语言,都是一样的。@rmaddy我正在尝试具体说明我在做什么。你断言所有语言的语言风格都是一样的,这一点都不正确。否则,我可以在Swift中使用python列表理解。你的问题确实要求回答,只要它能编译,就可以了。你没有领会我的意思。你的问题与你使用的语言无关。您询问的是使用恰好支持多种语言的API的一般方法。你的问题中绝对没有任何特定于Swift的内容。无论使用何种语言,添加标签和按钮以及使用表视图都是一样的。一旦你选择了最好的方法,当然,Swift和Objective-C之间该方法编码的具体细节略有不同,但你并没有在这么低的层次上提出任何要求。我发现很难在没有编码的情况下通读长段落。:-)但如果我读对了,您(1)无法将点击手势添加到UITableView或UITableViewCell中的UILabel,即使(3)可以让UISwitch工作。下一步——我在你的问题中没有提到的一步——是:你能成功地在一个“普通”UILabel上添加一个点击手势吗?