내 기본 뷰에 내 사용자 정의 UIView를 추가하고 싶습니다. 설명 : 같은 :하위 뷰 클래스의 기능을 가진 기본 뷰에 하위 뷰 추가
나는 함수 initWithTitle 사용할
AchievementView *achievement = [[AchievementView alloc] initWithTitle:@"Test" description:@"The Descr"]];
을하지만이 작동하지 않습니다. 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];
홈페이지 볼 수 있습니다. 그것은'AchievementView * 업적 = [[AchievementView alloc] initWithTitle ... '이어야합니다. –
oops. 내가 설명하기 위해서만 썼다, 내가 뭘하고 싶은지,) – Florian
나는 너가하려고하는 것에 약간 혼란스러워. 이 코드는 모두 일러스트레이션 용입니까, 아니면 실제 코드입니까? 실제 코드라면 이니셜 라이저는 클래스 메서드 여야하며 특정 규칙 (예 : + (id) init ... { self = [super init]; if (self) {/ * 물건 초기화 * /} 자기 복귀; } 그렇게하지 않으면 self는 항상 null이됩니다. – Travis