我正在为通知下拉横幅创建 UIView 子类。
我正在使用 XIB 来构建 View ,并希望在它初始化时将该 xib 分配给该类(即避免必须从调用 ViewController 执行此操作)。

由于您无法在 swift 中分配给“自我”,我该如何从类(class)内部正确地做到这一点?

class MyDropDown: UIView
{
     func showNotification()
     {
          self = UINib(nibName: nibNamed, bundle: bundle).instantiateWithOwner(nil, options: nil)[0] as? UIView
     }
}

最佳答案

对于任何想在 swift 中从它自己的类初始化 xib 的人来说,这是使用自定义类初始化程序的最佳方法:

class MyCustomView: UIView
{
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var titleLabel: UILabel!

    class func initWithTitle(title: String, image: UIImage? = nil) -> MyCustomView
    {
        var myCustomView = UINib(nibName: "MyCustomView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as? MyCustomView

        myCustomView.titleLabel.text = title

        if image != nil
        {
            myCustomView.imageView.image = image
        }

        //...do other customization here...
        return myCustomView
    }
}

10-04 21:04