在视图控制器中使用自定义 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的主要内容,如果未能解决你的问题,请参考以下文章