ios - Swift 3 - 复制 UIView 后 IBOutlet nil

标签 ios swift uiview

我有一个或多或少的特殊情况的问题。我必须复制一个从 Nib 加载的 UIView。这是源变量的初始化:

let view = Bundle.loadView(fromNib: "MyView", withType: MyView.self)

View 有两个标签作为 outlets 属性,如下所示:

class MyView: UIView {

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var subLabel: UILabel!

}

在我的例子中,我必须复制这个 View 。所以我找到了这个应该可以正常工作的解决方案:

import UIKit

extension UIView
{
    func copyView<T: UIView>() -> T {
        return NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self)) as! T
    }

}

不幸的是,当我调用这条线时:

let copyView = view.copyView()

labelsubLabel 属性为 nil。在 view 中,它们已设置。 MyView.xib 中的 FilesOwner 设置为 MyView

我的情况下可以使用复制功能吗?有人建议如何在这里进行吗?

最佳答案

使用下面的方法获取UIView

let view = MyView(nibName: "MyView", bundle: nil)

希望对您有所帮助。

关于ios - Swift 3 - 复制 UIView 后 IBOutlet nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45210045/

相关文章:

ios - 检测子层元素上的触摸

ios - 圆形 View 上的阴影不均匀

ios - 从 sqlite iOS 中选择数据有时有空语句

ios - 是否可以在 collectionview sizeForItemAtIndexPath 委托(delegate)方法中获取单元格的标签?

swift - 如何在没有强引用循环的情况下将对象生命周期组合在一起?

dictionary - 合并具有多种类型或 Any/AnyObject 类型的字典

ios - 如何在加载 UIWebView 时添加加载图像?

iphone - 是否有 APN 的替代方案

iphone - 检测 MathJax 何时在 UIWebView 中完成加载

iOS - 禁用答案但保留 Crashlytics