动态添加按钮在iOS中相互覆盖

时间:2013-03-20 17:21:53

标签: ios objective-c

我正在开发iOS应用程序(我的第一个 - 我很长一段时间以来一直是.NET开发人员)。

我正在设置一个动态添加的按钮 - 一切都很好,除了我尝试创建的按钮相互覆盖。

有关如何动态添加按钮并更改其位置的任何想法? (在ASP.NET中我添加占位符和控件......但在iOS中,这不是一个选项)

代码:

UIButton btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn addTarget: self action:@selector(loadQuestion:) forControlEvents:UIControlEventTouchUpInside;
[btn setTitle:@"My Button" forState:UIControlStateNormal];
btn.frame = CGRectMake(350.0,750.0,160.0,40.0);
[self.view addSubView:btn];

2 个答案:

答案 0 :(得分:0)

不要对所有按钮使用相同的 X-cordinates 。请参阅以下代码

-(void)addSixButtons{

  float xCord = 5.0;

   for(int itemIndex = 1; itemIndex < 7; itemIndex++){

     UIButton myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
     [myButton addTarget: self action:@selector(loadQuestion:) forControlEvents:UIControlEventTouchUpInside;
     [myButton setTitle:@"My Button" forState:UIControlStateNormal];
     myButton.frame = CGRectMake(xCord,750.0,160.0,40.0);
     myButton.tag = itemIndex;
     [self.view addSubView:myButton];

     xCord += 165.0;
   }
}

-(void)loadQuestion:(id)sender{

   UIButton *btnClicked = (UIButton *)sender;

  switch(btnClicked.tag){

       case1:
        //clicked first button
        break;

      case2:
       //clicked second button
       break;

     default:
      break;
  }

}

答案 1 :(得分:0)

此处,代码问题在于您为按钮CGRectMake(350.0,750.0,160.0,40.0)

指定了相同的框架

如果你想让它们水平对齐,你需要改变按钮的x位置,如果你想垂直对齐它们,可以改变y posyion。

在iPhone中,位置由第CGRectMake(x,y,width,height)帧指定。因此,根据要求指定不同的x和y值,如果使用循环,也可以递增该值。