// In the original .m file,there are bunch of outlets in the interface extension.@interface aVIEwController()@property (weak,nonatomic) IBOutlet UIVIEw *contentVIEw1;@property (weak,nonatomic) IBOutlet UIVIEw *contentVIEw2;@property (weak,nonatomic) IBOutlet UIVIEw *contentVIEw3;@end
我想根据三种不同的观点将文件分成3个类别.
// In category aVIEwController+contentVIEw1.m file@interface aVIEwController()@property (weak,nonatomic) IBOutlet UIVIEw *contentVIEw1;@end
但是,如果我删除了原始的contentVIEw1插座,则它不起作用.
题
为什么我必须将contentVIEw1插件保留在原始.m文件中?
但是,您可以在类扩展中添加其他属性.类扩展名用与原始类相同的名称表示,后跟().在你的代码示例中,引用@interface aVIEwController()的两行实际上都声明了一个类扩展(不是类别),而不管它们实际上在哪个头文件中.
此外,您可以跨多个不同的标头创建多个类扩展.诀窍是你需要正确导入这些.
在示例中,我们考虑一个名为VIEwController的类.我们想要创建VIEwController Private.h和VIEwController Private2.h,它们具有额外的privateVIEw出口,仍然可以在VIEwController.m中访问.
以下是我们如何做到这一点:
VIEwController.h
// nothing special here#import <UIKit/UIKit.h>@interface VIEwController : UIVIEwController// some public propertIEs go here@end
VIEwController Private.h
// Note that we import the public header file#import "VIEwController.h"@interface VIEwController()@property (nonatomic,weak) IBOutlet UIVIEw *privateVIEw;@end
VIEwController Private2.h
// Note again we import the public header file#import "VIEwController.h"@interface VIEwController()@property (nonatomic,weak) IBOutlet UIVIEw *privateVIEw2;@end
VIEwController.m
// Here's where the magic is// We import each of the class extensions in the implementation file#import "VIEwController.h"#import "VIEwController+Private.h"#import "VIEwController+Private2.h"@implementation VIEwController// We can also setup a basic test to make sure it's working.// Just also make sure your IBOutlets are actually hooked up in Interface Builder- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; self.privateVIEw.backgroundcolor = [UIcolor redcolor]; self.privateVIEw2.backgroundcolor = [UIcolor greencolor];}@end
这就是我们如何做到这一点.
为什么你的代码不起作用
最有可能的是,你可能混淆了#import语句.要解决这个问题,
1)确保每个类扩展文件导入原始类头(即VIEwController.h)
2)确保类实现(即VIEwController.m)文件导入每个类扩展标头.
3)确保类头(即VIEwController.h)文件不导入任何类扩展头.
作为参考,您还可以在Customizing Existing Classes上查看Apple文档.
总结以上是内存溢出为你收集整理的ios – 我们可以将IBOutlets列入一个类别吗?全部内容,希望文章能够帮你解决ios – 我们可以将IBOutlets列入一个类别吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)