ios - 如何快速实现类调配?

标签 ios swift xcode class method-swizzling

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

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

所以我想,如果我可以用父 view.xib 的类更改容器 View 的类,我的工作就可以完成。

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

基本上,我在 uitableview 单元格的容器( View )上添加了容器 View ,我的代码如下所示

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()
        }

最佳答案

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

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

祝你好运,编码愉快!

-- 编辑--

您更新的代码显示这将是 UITableView 的一部分,并且您正在尝试将自定义 View 添加到 UITableViewCell 之上。您应该改为实例化自定义 UITableViewCell 并将其注册为可重用 TableView 。本教程将指导您如何做到这一点:Custom UITableViewCell Tutorial - TableView with Images and Text in Swift

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

干杯!

关于ios - 如何快速实现类调配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46425338/

相关文章:

ios - UIVisualEffectView Mask 不适用于 iPhone 7 Plus 模拟器

ios - 钛iOS : Anything wrong with a global navgroup?

iphone - iOS写入文件

ios - 如何在 UIStackView Swift 4 中查找所选项目的索引

ios - CNContactViewController - 编辑按钮未显示

ios - 当我们在 iOS swift 中单击文本字段时,是否可以显示操作表并隐藏键盘?

ios - 如何以编程方式备份​​ Realm 文件?

swift - UITextField 不显示

swift - Xcode 无法识别新的测试函数

C++ 标准方法列表