【问题标题】:Set all UILabels to subclass programmatically以编程方式将所有 UILabel 设置为子类
【发布时间】:2017-09-03 15:11:50
【问题描述】:

我想要子类化的项目中有很多很多现有的UILabels。与其花几天时间在 IB 中单独将它们设置为我的 UILabel 子类,不如以编程方式设置它们

在这里检查: How to programmatically set custom class?

尝试了几个猜测:UILabel_setClass(self.contentView, [MyLabel class]); - 隐式声明错误

和:

        Class  lbl = [[MyLabel alloc] init];

        for (id view in [self.contentView subviews]) {
            if ([view isKindOfClass:[UILabel class]]) {

                 //....sub it here?

                 }
        }

【问题讨论】:

    标签: ios objective-c cocoa-touch subclassing


    【解决方案1】:

    首先,更改对象类是非常糟糕的主意。这是一种气味代码。如果将来新开发人员将使用默认的UILabel 类,则可能会出现奇怪的错误。运行时 - 是 Objective-C 的一个伟大和最差的特性。它可以在坏人手中创造隐藏的错误。所以要非常小心地使用它,三思而后行——你在项目中真的需要它吗?更好的是 - 明确编写代码,使用设计模式等。

    在您的问题中不清楚为什么需要更改对象类。如果您需要它来改变外观 - 然后使用UIAppearance。如果您需要扩展功能,请使用Extensions

    【讨论】:

    • 这是一个独特的情况,UIAppearance 在打印为 PDF 时会出现问题。当不在现实世界场景中处理现有项目时,设计模式等很好
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2010-11-13
    • 2015-06-09
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多