我尝试子类化UIView。因为我希望UIView中有一个枚举,所以我可以检查游戏中是否需要两次敲击UIView。但是我没有太多的子类化经验。而且它不起作用。还是我需要创建一个类别?
我所做的事情:
制作子类UIView
在自定义子类中创建属性
将类从UIView更改为情节提要中的子类
将所有UIView声明从我的游戏类更改为子类声明
码:
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, viewStaat) {
ENUMEnkelTap,
ENUMDubbelTap
};
@interface BannerView : UIView
@property (nonatomic, assign) viewStaat staatVanDeView;
@end
并在UIView的init中声明属性。
@synthesize staatVanDeView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
staatVanDeView = ENUMDubbelTap;
NSLog(@"Set");
}
return self;
}
日志没有被调用,所以我不知道出了什么问题。
staatVanDeView
中的整数始终保持为0。 最佳答案
从情节提要板实例化视图时,将不会调用方法-initWithFrame:
。使用-initWithCoder:
代替:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
staatVanDeView = ENUMDubbelTap;
}
return self;
}
而且您不需要线
@synthesize staatVanDeView;
因为属性的getter和setter是在最近的iOS版本中自动创建的。
关于ios - 子类化UIView并添加属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24980696/