我尝试过对UIView进行子类化。因为我想在我的UIView中使用枚举,所以我可以检查UIView是否需要在我的游戏中点击两次。但是我没有太多的子类化经验。它不起作用。或者我是否需要创建一个类别?
我做的事情:
代码:
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, viewStaat) {
ENUMEnkelTap,
ENUMDubbelTap
};
@interface BannerView : UIView
@property (nonatomic, assign) viewStaat staatVanDeView;
@end
并在UIView中声明属性。
@synthesize staatVanDeView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
staatVanDeView = ENUMDubbelTap;
NSLog(@"Set");
}
return self;
}
日志没有被调用,所以我不知道什么是错的。 staatVanDeView
中的整数始终为0。
答案 0 :(得分:1)
从故事板中实例化视图时,不会调用方法-initWithFrame:
。请改用-initWithCoder:
:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
staatVanDeView = ENUMDubbelTap;
}
return self;
}
你不需要这条线
@synthesize staatVanDeView;
因为属性的getter和setter是在最近的iOS版本中自动创建的。