gpt4 book ai didi

objective-c - Xib 没有出现在 View 中

转载 作者:可可西里 更新时间:2023-11-01 00:56:08 25 4
gpt4 key购买 nike

我有一个 Xib 文件,试图用我的 Storyboard设置它。 Xib 文件中的所有内容都很好,但由于某种原因,它没有显示。我从 GitHub 导入了一个文件,该文件设置为我的 Xib,它在 Objective-C 中,我设置了桥接,没有错误。但是当我运行它时,没有任何东西显示它是空白的。我没有在 View Controller 中设置什么吗?一切都以编程方式完成,我只是在 Storyboard 中设置类(class)。

Storyboard截图:

enter image description here

当我推送到 ViewController 时,模拟器会给我什么:

enter image description here

这是我应该看到的:

enter image description here

我正在努力实现的 - https://github.com/jberlana/JBCroppableView

我的 XIB 类(class)

import UIKit

class CropViewXIB: UIView {

@IBOutlet weak var ImageView: JBCroppableImageView!

@IBAction func SubAction(_ sender: Any) {
ImageView.removePoint()
}

@IBAction func AddAction(_ sender: Any) {
ImageView.addPoint()
}

@IBAction func UndoAction(_ sender: Any) {
ImageView.reverseCrop()
}

@IBAction func CropAction(_ sender: Any) {
ImageView.crop()
}


override init(frame: CGRect) {
super.init(frame: frame)
commomInit()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commomInit()
}

private func commomInit(){
Bundle.main.loadNibNamed("CropViewXIB", owner: self, options: nil)
self.addSubview(ImageView)
ImageView.frame = self.bounds
ImageView.autoresizingMask = [.flexibleHeight, .flexibleWidth]

}
}

我的 View Controller

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var cropView: CropViewXIB!

override func viewDidLoad() {
super.viewDidLoad()
}
}

最佳答案

问题是您实际上没有获得 UINib 对象的父 View 。

Bundle.main.loadNibNamed("CropViewXIB", owner: self, options: nil)

上面的行返回一个 [Any] 在你的情况下你甚至没有使用它返回的 View 。所以想法是从中获取第一个对象并将其转换为 UIView 例如:

 Bundle.main.loadNibNamed("CropViewXIB", owner: self, options: nil)?.first as? UIView

就个人而言,这就是我与 Nib 交互的方式。我创建了一个 UIView 类型的 view 属性,它可以被称为 nib 的父 View ,所有 subview 都被添加到它而不是 self.

像这样:

final class SomeNibView: UIView {
public var view: UIView!


private func setup() { // called to the initializer
// grab the views from loadNibNamed
guard let _view = Bundle.main.loadNibNamed("name", owner: self, options: nil)?.first as? UIView else { return }
// set it to our view property
view = _view
// add this property to the nib subview aka self
addSubview(view)

view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}

private func addMulitpleSubviews() {
// instead of doing self.addSubview(....) when it comes to add other subviews
// you'll do this view.addSubview(....)
}
}

关于objective-c - Xib 没有出现在 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47973446/

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