我有一个使用故事板和ARC的iOS5项目。
我在故事板中有一个带有thisViewController类的视图,在那里我得到了一个较小的子视图,我将其拖入并为其提供了类ViewView。
thisView有一个自定义的drawRect函数,可以正常工作并绘制我想要的内容。 但我也想动态添加按钮,所以我将它们添加到thisView的initWithFrame方法中,如下所示:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSLog(@"This is called <3");
UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 50, 50);
btn.backgroundColor = [UIColor redColor];
[btn setTitle:@"Play" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
[self bringSubviewToFront:btn]; // last thing I tried, didn't work, thought z-index was to low or something
}
return self;
}
自NSLog显示以来,正在调用该函数,但无法找到该按钮
- 编辑 -
额外信息:
ThisView.h
@interface RadarView : UIView <CLLocationManagerDelegate>{
CLLocation *currentLocation;
}
答案 0 :(得分:0)
不要在init方法中添加SubView。
在- (void)layoutSubviews
。
- (void)layoutSubviews {
[super layoutSubviews];
if (![self viewWithTag:12345]) {
UIButton *btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 50, 50);
btn.tag = 12345;
btn.backgroundColor = [UIColor redColor];
[btn setTitle:@"Play" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
}
}
答案 1 :(得分:0)
我发现问题是由于一些评论和聊天
在radarviewcontroller中有一个init,它触发了initwithframe,这使得NSLog显示,并且没有使用initwithcoder,所以我没有看到任何东西,这就是问题并且混淆了东西。感谢您的评论和帮助!