以编程方式添加UIButton不会显示

3
我目前正在制作一款iOS 8应用程序,准备在iOS 8发布后上架应用商店。由于我需要保密,所以不能展示太多代码,但是我正在创建一个视图控制器,其中包含许多对象的滚动视图,以便为用户创建个人资料。然而,我想在所有用户的个人资料中添加一个按钮来添加项目,但是该按钮无法添加到滚动视图中...是否有关于UIButton和UIScrollView的不成文规定?
以下是我用来创建按钮的代码:
UIButton *addProject = [[UIButton alloc] initWithFrame:CGRectMake(210, 285, 100, 18)];
[addProject setTitle:@"Show View" forState:UIControlStateNormal];
[addProject addTarget:self action:@selector(addProjectPressed:) forControlEvents:UIControlEventTouchUpInside];
[_scrollView addSubview:addProject];

我需要做些什么才能将它添加到滚动视图中呢?

编辑1: _scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 699);

编辑2: 另外,滚动视图是在故事板中创建的,框架为0, 64, 320, 455,但上面的内容大小有更大的高度。


你能展示一下你的scrollView框架吗? - Vinod Singh
刚刚添加了内容,这是你想要的吗? - Zach Ross-Clyne
你是如何使用Storyboard或者以编程方式添加scrollView的? - BalaChandra
刚刚也加入了那个编辑,哈哈,使用故事板。 - Zach Ross-Clyne
请尝试使用我在答案中发布的代码。 - Vinod Singh
刚刚编辑了你的答案,将UIButtonType从custom更改为roundedrect,现在可正常工作。 - Zach Ross-Clyne
2个回答

9

试试这个方法:

UIButton *addProject = [UIButton buttonWithType: UIButtonTypeRoundedRect];
addProject.frame = CGRectMake(210, 285, 100, 18);
[addProject setTitle:@"Show View" forState:UIControlStateNormal];
[addProject addTarget:self action:@selector(addProjectPressed:) forControlEvents:UIControlEventTouchUpInside];
[_scrollView addSubview:addProject];

尝试添加这行代码:
addProject.backgroundColor = [UIColor redColor];

有时候,由于背景颜色相同,它可能不会出现。


1
现在这个可以工作了,我该如何使值变成像在bar中一样的+,而不仅仅是将标题设置为@"+",这只是一个小加号。 - Zach Ross-Clyne
我已经使用上述代码创建了一个UIButton。当我们多次点击按钮时,动作不会发生。这是间歇性的,可能的原因是什么? - Raghav
@Raghav,请确保您的超级视图和按钮启用了用户交互。 - Vinod Singh
是的,用户交互已启用,我们有导航控制器,点击它将进入下一个屏幕,点击返回按钮将回到主屏幕。如果我重复上述步骤多次,那么在某个时刻它将停止工作,并立即在下一次点击时工作。 - Raghav
@Raghav 你的代码写在了ViewDidLoad还是ViewWillAppear中? - Vinod Singh
显示剩余3条评论

2
UIButton *addProject = [UIButton buttonWithType: UIButtonTypeRoundedRect];
addProject.frame = CGRectMake(210, 285, 100, 18);
[addProject setTitle:@"Show View" forState:UIControlStateNormal];
[addProject addTarget:self action:@selector(addProjectPressed:) forControlEvents:UIControlEventTouchUpInside];
[_scrollView addSubview:addProject];
_scrollView.backgroundColor = [UIColor clearColor];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接