[英]How to add a UIButton at runtime
我试图在运行时添加一个UIButton
,但它不可见。 我究竟做错了什么?
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
btn.frame = CGRectMake(0, 0, 100, 25);
btn.backgroundColor = [UIColor clearColor];
[btn setTitle:@"Play" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick:)
forControlEvents:UIControlEventTouchUpInside];
btn.center = self.center;
[self addSubview:btn];
}
return self;
}
首先,确保调用initWithFrame:方法。 如果您的视图位于Nib中,则会调用initWithCoder :.
其次,按钮是唯一的子视图(从您的代码看起来像它,但你永远不知道)。 该按钮可以隐藏在另一个子视图后面。 调用bringSubviewToFront:如果需要。
最后,视图本身是否可见? 是否足以显示按钮? 根据您的示例,如果视图宽度小于100像素,则按钮将不会显示,因为它将被视图的边界剪切。
您必须释放btn
并删除buttonClick
中的“:”:
UIButton *btn= [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
btn.frame = CGRectMake(0, 0, 100, 25);
btn.backgroundColor = [UIColor clearColor];
[btn setTitle:@"Play" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
[btn release];
如果它仍然不起作用,请尝试删除选择器名称末尾的::@ selector(buttonClick)
您不需要保留UIButton,因为它由[self.view addSubview:btn]保留;
首先检查您的代码是否正在执行initwithFrame方法。 因为如果你从nib加载视图,即使用
NSArray *xibviews = [[NSBundle mainBundle] loadNibNamed: @"MySubview" owner: mySubview options: NULL];
MySubview *msView = [xibviews objectAtIndex: 0];
[self.view addSubview:msView];
然后initWithFrame部分将不会执行。所以请检查一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.