【问题标题】:How to implement class swizzling swift?如何快速实现类swizzling?
【发布时间】:2017-09-26 11:31:13
【问题描述】:

我有一个 view.xib 文件,它有一个小容器(容器视图),其中包含按钮/文本字段等所有控件,控件的所有事件都由父 view.xib 类文件处理。

我的要求是在一个地方我需要添加/显示父级,即 view.xib 完成的屏幕。在另一个地方,我只需要添加容器视图。当我仅添加/显示容器视图时,控件的关联事件/方法不起作用。

所以我想,如果我可以用父view.xib的类来改变容器视图的类,我的工作就可以完成了。

因此,如果可以以这种方式处理,请建议我一些其他解决方案或类混合。

基本上我在 uitableview 单元格的容器(视图)上添加容器视图,我的代码如下

if  let questionContainerView = cellQuestionView.viewQuestionContainer {


    //    let questionContainerView = cellQuestionView
            cell.viewQuestionContainer.addSubview(questionContainerView)
            questionContainerView.translatesAutoresizingMaskIntoConstraints = false
            cell.viewQuestionContainer.addConstraint(NSLayoutConstraint(item: questionContainerView, attribute: NSLayoutAttribute.left, relatedBy: NSLayoutRelation.equal, toItem: cell.viewQuestionContainer, attribute: NSLayoutAttribute.left, multiplier: 1, constant: 0))
            cell.viewQuestionContainer.addConstraint(NSLayoutConstraint(item: questionContainerView, attribute: NSLayoutAttribute.right, relatedBy: NSLayoutRelation.equal, toItem: cell.viewQuestionContainer, attribute: NSLayoutAttribute.right, multiplier: 1, constant: 0))
            cell.viewQuestionContainer.addConstraint(NSLayoutConstraint(item: questionContainerView, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: cell.viewQuestionContainer, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0))
            cell.viewQuestionContainer.addConstraint(NSLayoutConstraint(item: questionContainerView, attribute: NSLayoutAttribute.bottom, relatedBy: NSLayoutRelation.equal, toItem: cell.viewQuestionContainer, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0))
            cellQuestionView.layoutIfNeeded()
        }

【问题讨论】:

  • 你能添加一些代码来更好地解释你的问题吗?
  • 我已经编辑了我的问题

标签: ios swift xcode class method-swizzling


【解决方案1】:

我相信您想要做的是使用您的控制按钮创建一个可重复使用的 UIView,您可以在不同的视图控制器中使用它。 Youtube 上有一个很棒的教程,名为iOS Basically: Reusable UIView - Programming in Swift (Part 1)

基本上,您需要创建一个专用于您想要重用的视图的 .Xib 文件,所有操作都由该自定义视图类处理。每次您想要自定义视图时,都需要从 Xib 文件中对其进行实例化,并手动将其作为子视图添加到容器视图中。

祝你好运,编码愉快!

-- 编辑--

您更新的代码显示这将成为 UITableView 的一部分,并且您正尝试将自定义视图添加到 UITableViewCell 之上。相反,您应该实例化一个自定义 UITableViewCell 并将其注册为可在表格视图中重用。本教程应该指导您这样做:Custom UITableViewCell Tutorial - TableView with Images and Text in Swift

您可以在自定义表格单元格中定义@IBAction,并将按钮选择器附加到自定义单元格笔尖中的操作。

干杯!

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多