在视图控制器中使用自定义 uiview

Posted

技术标签:

【中文标题】在视图控制器中使用自定义 uiview【英文标题】:Using custom uiview in viewcontroller 【发布时间】:2020-12-17 05:32:14 【问题描述】:

我正在尝试使用 xib 文件中的自定义 uiview。我是初学者,不知道从哪里开始。到目前为止我有这个,但我不知道我应该将占位符视图设置为什么

编辑:完整视图控制器:

import UIKit

class Viewcontroller: UIViewController 

    
    @IBOutlet weak var placeholderView: UIView!
    
    
    override func viewDidLoad() 
        super.viewDidLoad()
        
        placeholderView = view
        
    
    
    class func instanceFromNib() -> CustomView 
            let view = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomView
            return view
    
    

【问题讨论】:

“使用 xib 文件中的自定义 uiview”并不能说明全部情况。 UIView 对象将在哪里以及如何使用? 我目前在 uiviewcontroller 中有一个 uiview,它是一个占位符。我正在尝试用不同的 customViews 替换占位符 uiview。我正在尝试从第一个 customView 开始,但是当我设置 placeholderView = view 时它没有改变 那四行代码从何而来?除非您指定类名,否则其他人将无法知道您在哪里编写代码。 我现在发布了整个viewController placeholderView = 视图不做任何事情 【参考方案1】:

A.让我假设您有一个名为“TestView”的 xib 文件。还让我假设您有一个名为“TestView”的UIView 子类文件。 B. 选择您的 xib 文件。并选择文件的所有者。并将类设置为TestView(子类文件的名称)。 C. 使用 Interface Builder 打开 xib 文件。选择“自定义视图”。 (在中间窗格中)IBOutlet-将此视图连接到您的UIView swift 文件。例如,将其命名如下。 @IBOutlet var customView:NSView! D. 这个子类文件应该有以下内容。

import UIKit

class TestView: UIView 
    @IBOutlet var contentView: UIView!
    
    override init(frame: CGRect) 
        super.init(frame: frame)
        commonInit()
    
    
    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        commonInit()
    
    
    private func commonInit() 
        Bundle.main.loadNibNamed("TestView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
    

E.打开故事板。将自定义视图拖放到视图控制器场景中。在身份检查下,将类名设置为 TestView。 F. IBOutlet-连接视图控制器中的自定义视图对象,如下所示。

import UIKit

class ViewController: UIViewController 
    @IBOutlet weak var testView: TestView!
    
    override func viewDidLoad() 
        super.viewDidLoad()
    

就是这样。

【讨论】:

抱歉没有具体说明,但我最终需要将 placeholderView 更改为多个不同的 customView,因此我不能只进入情节提要并将类更改为一个 customView

以上是关于在视图控制器中使用自定义 uiview的主要内容,如果未能解决你的问题,请参考以下文章

在视图控制器中访问 UIView 子类

自定义 UIView 标签和动画未显示在视图控制器中

iOS - 将自定义 UIView 放在视图控制器中

将数据从自定义表格视图单元格传递到 UIView 控制器

在 ViewController 中显示自定义 UIView

我希望我的视图控制器具有相同的自定义 UIView 组合,它们可以相互通信