gpt4 book ai didi

swift - 从 nib 添加自定义 View 到 viewcontroller

转载 作者:搜寻专家 更新时间:2023-11-01 06:32:13 25 4
gpt4 key购买 nike

我有一个顶部有自定义 View 区域的 View Controller ,如下图所示 enter image description here

我想将自定义 xib 加载到该区域,但我正在努力这样做。我创建了一个 ABC.swift 文件,它是 NSView 的子类和一个同名的 .xib 文件。在来自身份检查器的 .xib 文件中,我设置了 ABC 类。然后在我的 View Controller 的 viewDidLoad() 中,我尝试执行以下操作

let abcView = Bundle.main.loadNibNamed("ABC", owner: self, topLevelObjects: nil) as ABC

我还在我的 vc 中为自定义 View 创建了一个导出然后在 viewDidLoad()

customView.addSubview(abcView)

但这不起作用,因为 abcView 是 Bool 类型。谁能告诉我我做错了什么?实现我的目标的最佳方式是什么?

最佳答案

我在 NSView 上使用以下扩展:(与用户 Accepted Answer 给出的答案相同)

import Foundation
import Cocoa

extension NSView {

static func loadFromNib(nibName: String, owner: Any?) -> NSView? {

var arrayWithObjects: NSArray?

let nibLoaded = Bundle.main.loadNibNamed(NSNib.Name(rawValue: nibName), owner: owner, topLevelObjects: &arrayWithObjects)

if nibLoaded {
guard let unwrappedObjectArray = arrayWithObjects else { return nil }
for object in unwrappedObjectArray {
if object is NSView {
return object as? NSView
}
}
return nil
} else {
return nil
}
}
}

这是在 NSViewControllerloadView() 中使用它的方法:

if let loadedNavButtons: NavigationButtonsView = NSView.loadFromNib(nibName: "NavigationButtonsView", owner: self) as? NavigationButtonsView {
// Do whatever you want with loadedNavButtons
}

适用于 Swift 4、XCode 9.2

关于swift - 从 nib 添加自定义 View 到 viewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45567363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com