我已经完成了我UIView
代表的自定义UIViewController
。视图显示在屏幕上,但我在UIView实例上设置的BOOL无法识别。
代码:
UIView实施:
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
[self createInterface];
}
return self;
}
-(void)createInterface
{
if (self.isSplash == YES) {
self.backgroundColor = [UIColor clearColor];
}
else {
self.backgroundColor = DARK_BLUE;
[self setupTimer];
}
....
的ViewController:
self.sponsorView = [[SponsorMechanismView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.logo.frame)+10, SCREEN_WIDTH, 100)];
self.sponsorView.isSplash = YES;
[self.view addSubview:self.sponsorView];
所以,我将BOOL设置为YES,但在这个UIView中它总是NO。
答案 0 :(得分:1)
正如Fabio所说,createInterface已经被执行了 你可以做的是创建自己的init函数。像这样:
- (id)initWithFrame:(CGRect)frame isSplash(BOOL)isSplash
{
self = [super initWithFrame:frame];
self.isSplash = isSplash;
if (self) {
[self createInterface];
}
return self;
}
该函数的调用将如下:
self.sponsorView = [[SponsorMechanismView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.logo.frame)+10, SCREEN_WIDTH, 100) isSplash:YES];
答案 1 :(得分:1)
- (id)initWithFrame:(CGRect)frame AndIsFlash:(BOOL)isFlash{
self = [super initWithFrame:frame];
if (self) {
[self createInterfaceAndisFlash:isFlash];
}
return self;
}
-(void)createInterfaceAndisFlash:(BOOL)isFlash
{
if (isFlash == YES) {
self.backgroundColor = [UIColor clearColor];
}
else {
self.backgroundColor = [UIColor blueColor];
}
}
希望你有个主意。
答案 2 :(得分:1)
如评论中所述:
设置creatInterface
时,isSplash
方法已经执行。
您可以通过覆盖isSplash
的设置者并在那里调用createInterface
来解决此问题。
这里的代码示例:
- (void)setIsSplash:(BOOL)isSplash
{
if (isSplash != _isSplash)
{
_isSplash = isSplash;
[self createInterface];
}
}