首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在运行时添加UIButton

如何在运行时添加UIButton
EN

Stack Overflow用户
提问于 2008-11-21 04:18:39
回答 5查看 31.7K关注 0票数 16

我试图在运行时添加一个UIButton,但是它是不可见的。我做错了什么?

代码语言:javascript
复制
- (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;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-21 04:39:57

首先,确保调用了initWithFrame:方法。如果您的视图位于Nib中,则将改为调用initWithCoder:。

其次,按钮是否是唯一的子视图(从您的代码看,它看起来是这样的,但您永远不会知道)。按钮可能隐藏在另一个子视图后面。调用bringSubviewToFront:如果需要的话。

最后,视图本身是可见的吗?它是否足够大,可以显示按钮?给出您的示例,如果视图的宽度小于100像素,按钮将不会显示,因为它将被视图的边界裁剪。

票数 9
EN

Stack Overflow用户

发布于 2010-10-08 16:37:21

您必须释放btn并删除buttonClick中的":“

代码语言:javascript
复制
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];
票数 1
EN

Stack Overflow用户

发布于 2009-04-04 15:34:38

如果仍然不起作用,请尝试删除选择器名称末尾的::@选择器(ButtonClick)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/307845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档