当我添加一个新按钮时,旧按钮消失

时间:2011-11-25 16:58:15

标签: iphone objective-c ios

我有一个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个按钮已经消失。新按钮非常小,只占用了一小部分视图。

有人能告诉我按钮的位置吗?

4 个答案:

答案 0 :(得分:2)

通过分配新视图 - self.view = - 您将替换界面构建器中设置的原始视图。注释掉第一行,您应该找到原始视图(和按钮),并添加新按钮。

如果 想要以编程方式创建视图,正确的方法是实现loadView方法并在其中为self.view分配新的UIView。 (显然,您希望将UI项添加到该视图中。)值得仔细阅读UIViewController文档。

这是some example code of implementing loadView

答案 1 :(得分:2)

删除第一行并查看结果。没有理由为viewConrtoller创建新的整个视图。

只需将框架设置得更大,即可使新按钮变大 - CGRectMake(100, 100, 100, 100);

答案 2 :(得分:1)

为什么要分配另一个视图?它将取代旧的和它包含的一切。 只需创建按钮。

答案 3 :(得分:1)

像这样的Smth:

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];