我有一个或多或少的特殊情况的问题。我必须复制一个从 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()
label
和 subLabel
属性为 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/