我想将我的自定义UIView添加到我的主视图。添加子视图到具有子视图类功能的主视图
我想使用的功能initWithTitle:描述:喜欢:
AchievementView *achievement = [[AchievementView alloc] initWithTitle:@"Test" description:@"The Descr"]];
但是,这是行不通的。 t initWithTitle:description:函数必须作为类方法实现。
AchievementView.h
@interface AchievementView : UIView
@property (strong) NSString *achievementTtl;
@property (strong) NSString *achievementDescr;
@property (strong) UIView *theAchievementView;
- (void)initWithTitle:(NSString*)achievementTitle description:(NSString*)achievementDescription;
- (void)showAchievement;
@end
AchievementView.m
-(void)initWithTitle:(NSString*)achievementTitle description:(NSString*)achievementDescription {
self.achievementTtl = achievementTitle;
self.achievementDescr = achievementDescription;
}
- (void)showAchievement {
// Create view popup
self.theAchievementView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 423)];
self.theAchievementView.layer.cornerRadius = 8;
self.theAchievementView.layer.masksToBounds = YES;
self.theAchievementView.layer.shadowRadius = 5;
self.theAchievementView.layer.shadowOpacity = .15;
[self.theAchievementView setBackgroundColor:[UIColor whiteColor]];
[self addSubview:self.theAchievementView];
}
呼叫在主视图的方法:
- (IBAction)share:(id)sender {
AchievementView *achievement = [[AchievementView alloc] init];
achievement.achievementTtl = @"Test";
achievement.achievementDescr = @"TestDEscr";
[achievement showAchievement];
}
我不能与子视图添加到主视图这个功能。 我认为“自我”是错误的。应该在那里?
[self addSubview:self.theAchievementView];
你缺少'alloc'在你的代码。它应该是'AchievementView * achievement = [[AchievementView alloc] initWithTitle ...' –
oops。我写它只是为了解释,我想做什么;) – Florian
我对你想要做的事情有点困惑。是所有这些代码的插图,还是真正的代码?因为如果它是真实的代码,你的初始值必须是类方法,并且必须遵循某些约定,即, +(id)init ... {self = [super init]; if(self){/ * initialize stuff * /} return self; } 如果你不这样做,自我将永远为空。 – Travis