子类化UIView并添加属性

时间:2014-07-27 11:58:48

标签: ios objective-c uiview subclass objective-c-category

我尝试过对UIView进行子类化。因为我想在我的UIView中使用枚举,所以我可以检查UIView是否需要在我的游戏中点击两次。但是我没有太多的子类化经验。它不起作用。或者我是否需要创建一个类别?

我做的事情:

  • 制作子类UIView
  • 在自定义子类中创建属性
  • 将类从UIView更改为storyboard中的子类
  • 将我的游戏类中的所有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。

1 个答案:

答案 0 :(得分:1)

从故事板中实例化视图时,不会调用方法-initWithFrame:。请改用-initWithCoder:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
         staatVanDeView = ENUMDubbelTap;
    }
    return self;
} 

你不需要这条线

@synthesize staatVanDeView;

因为属性的getter和setter是在最近的iOS版本中自动创建的。