【问题标题】:Using custom uiview in viewcontroller在视图控制器中使用自定义 uiview
【发布时间】: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 = 视图不做任何事情

标签: swift uiview uiviewcontroller xib


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
相关资源
最近更新 更多