我有一个iPhone App,其视图包含2个按钮。我在Interface Builder中创建了这些按钮。
现在我想以编程方式向视图添加一个新按钮:
- (void) addButton {
//allocate the view
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
//set the view's background color
self.view.backgroundColor = [UIColor whiteColor];
//create the button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//set the position of the button
//button.frame = CGRectMake(100, 10, 50,50);
button.frame = CGRectMake(100, 100, 10,10);
//set the button's title
[button setTitle:@"Click Me!" forState:UIControlStateNormal];
[button addTarget:self action:@selector(myButtonClick:) forControlEvents:(UIControlEvents)UIControlEventTouchDown];
//add the button to the view
[self.view addSubview:button];
}
完成,它可以工作,但在Interface Builder中添加的其他2个按钮已经消失。新按钮非常小,只占用了一小部分视图。
有人能告诉我按钮的位置吗?
答案 0 :(得分:2)
通过分配新视图 - self.view =
- 您将替换界面构建器中设置的原始视图。注释掉第一行,您应该找到原始视图(和按钮),并添加新按钮。
如果 想要以编程方式创建视图,正确的方法是实现loadView
方法并在其中为self.view
分配新的UIView。 (显然,您希望将UI项添加到该视图中。)值得仔细阅读UIViewController
文档。
答案 1 :(得分:2)
删除第一行并查看结果。没有理由为viewConrtoller创建新的整个视图。
只需将框架设置得更大,即可使新按钮变大 - CGRectMake(100, 100, 100, 100)
;
答案 2 :(得分:1)
为什么要分配另一个视图?它将取代旧的和它包含的一切。 只需创建按钮。
答案 3 :(得分:1)
UIButton* Button = [UIButton buttonWithType: UIButtonRoundedRect];
[Button setTitle:@"MyButton" forState:UIControlNormal];
Button.frame = CGRectMake(100, 100, 200, 30);
[Button addTarget:self action:@selector(myButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[[self view] addSubview: Button];