【发布时间】:2014-07-27 11:58:48
【问题描述】:
我已经尝试子类化 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。
【问题讨论】:
-
非原子的就好了,因为整数是原始类型;你不需要分配。如果您在方法文件中合成属性,那么您可以在任何您喜欢的地方获取/设置属性。
-
我已经编辑过了。我显然无法设置属性,并且没有调用日志。
-
您是从 nib 上传您的视图还是在代码中创建它?
-
由于是人工合成的属性,需要拨打
self.staatVanDeView = ENUMDubbelTap -
@VladislavKovalyov 我的视图设置在 Storyboard 中,并且我已将 UIViews 类更改为 UIView 的子类。
标签: ios objective-c uiview subclass objective-c-category