我尝试子类化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/

10-14 21:11
查看更多