类的可重用代码

切萨雷

我的应用程序中的几个类执行相同的操作,并具有相同的实例变量:

// one of the many classes I have
// they all load nibs and update the frames of their views
class HelpView: UIView {
    @IBOutlet var view: UIView!

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        NSBundle.mainBundle().loadNibNamed("HelpView", owner: self, options: nil)
        self.addSubview(self.view)
        self.view.frame = self.bounds
    }
}

我想避免重复的代码,因此我考虑使用超类,以便所有类均从其继承。

// my new superclass all classes will inherit from
class ReusableView: UIView {
    @IBOutlet var view: UIView! // all subclasses have different views

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!

        // every class has a different nib name
        NSBundle.mainBundle().loadNibNamed("Nib name goes here", owner: self, options: nil)
        self.addSubview(self.view)
        self.view.frame = self.bounds
    }
}

问题是,viewnil,直到笔尖被载入,所以它显然无法调用父类的方法,因为你传递一个nil对象。我该如何处理?

地方

这将起作用:

class ReusableView: UIView {

    func getHelperView() -> UIView! {
        preconditionFailure("This method must be overridden") 
    } 

    func getNibName() -> String {
        preconditionFailure("This method must be overridden") 
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!

        // every class has a different nib name
        NSBundle.mainBundle().loadNibNamed(self.getNibName(), owner: self, options: nil)
        self.addSubview(self.getHelperView())
        self.getHelperView().frame = self.bounds
    }
}

class HelpView: ReusableView {
    @IBOutlet var view: UIView!

    override func getHelperView() -> UIView! {
         return view;
    } 

    override func getNibName() -> String {
         return "NibName";
    } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript代码优化-创建可重用的类

来自分类Dev

如何使动画代码可用于多个类-可重用性

来自分类Dev

可重用的 Angularjs 代码

来自分类Dev

使 JQuery 下拉代码可重用

来自分类Dev

样式中的代码可重用性

来自分类Dev

敲除绑定,JSON数据的可重用代码

来自分类Dev

android中的代码可重用性

来自分类Dev

Webmatrix-可重用的块代码?

来自分类Dev

敲除绑定,JSON数据的可重用代码

来自分类Dev

如何使代码在jQuery中可重用?

来自分类Dev

单个模块中的可重用代码

来自分类Dev

可重用反应组件中的 prop 类

来自分类Dev

可重用反应组件中的条件类

来自分类Dev

特性与抽象类进行代码重用

来自分类Dev

Cakephp 3-表实体的可重用代码

来自分类Dev

如何在iOS中创建可重用代码?

来自分类Dev

Symfony2可重用代码段功能

来自分类Dev

单元测试中的代码可重用性?

来自分类Dev

Android Studio中的移动和穿戴模块的可重用代码

来自分类Dev

跨多个组件的可重用模板/ html代码段

来自分类Dev

SwiftUI将Swift代码作为可重用视图的参数传递

来自分类Dev

如何使html和javascript代码可同时重用?

来自分类Dev

可堆叠特征中的继承和代码重用

来自分类Dev

将控制器代码转换为可重用指令

来自分类Dev

我想让我的表单处理代码可重用,但是如何?

来自分类Dev

Junit测试用例中的代码可重用性

来自分类Dev

已检查与未检查异常代码的可重用性

来自分类Dev

可重用代码肥皂客户端 Laravel

来自分类Dev

如何在 Puppeteer 中设计用于测试的可重用代码?