Objective-C:以编程方式从另一个类中添加UIButton

问题描述:

我无法连接代码和.xib文件之间的点。Objective-C:以编程方式从另一个类中添加UIButton

如果我想以编程方式将一系列UIButtons添加到我的视图控制器,我将如何从一个单独的类执行此操作?

例如,如果我有MainViewController.m,它被设置为Xcode中的根视图控制器,我怎样才能将UIButtonSecondViewController.m添加到该视图控制器?这甚至有可能吗?

我基本上想把我所有的“用户界面”代码放在一个单独的类中。

感谢

+0

为什么?你在XIB,控制器和希望有一个单独的模型中有你的看法。为什么控制器和视图互相捅戳? – bryanmac

要做到这一点,创建一个UIButton *myButton编程,然后调用[mainViewController addSubview:myButton];。这可能意味着您需要在SecondViewController类中存储MainViewController *资产。

UIButton例如重要的方法和属性(基本上,只是看看的文件,但这里有一组最小的东西,让你开始):

  • +[UIButton buttonWithType:buttonType] - 如果你确保”重新远程执行任何自定义在这里使用UIButtonTypeCustom(它不给你任何默认背景图片或以其他方式必须nil出)

  • setFrame: - 相对于其容器的按钮,可用性的位置,并设置大小原因widthheight应至少为44像素(如here所述)。

  • setTitle:forState: - UIControlStateNormal将作为对其他国家的默认属性,所以你可能只需要在此处设置的文本

  • setBackgroundImage:forState: - 使用UIControlStateNormalUIControlStateHighlighted/UIControlStateSelected为主,UIControlStateDisabled如果你想展示它随时变灰或无法访问。

  • setImage:forState: - 使用一个图标旁边的按钮上的文字(如指向下方的保存箭头或向上的负载等)

  • setEnabled:setHidden:setSelected: - 不同的按钮状态之间的转换。当你点击按钮时,setHighlighted:会自动发生。

  • addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside - TouchUpInside几乎总是你想要的一个简单的按钮按下,我在这里使用一个名为buttonClicked:的方法来处理我的按钮按下。

哦,如果你使用[[UIButton alloc] initWith...]一旦它加入到mainViewController :)

使用本

#import "MainViewController.h" 

@interface SecondViewController 
{ 
    MainViewController *mainView; 
} 

@property(nonatomic, retain) MainViewController *mainView; 

-(void)addButtons; 

在您的实现别忘了[myButton release]

@synthesize mainView; 

-(void)addButtons 
{ 
    UIButton *add = [UIButton alloc] init]; 
//do necessary stuff on button here 
[self.mainView addSubview:add]; 
[add release]; 
} 

在您的MainViewcontroller.m中

#import "SecondViewController.h" 

-(void)viewDidLoad 
{ 
[self superViewDidLoad]; 
SecondViewController *second = [SecondViewController alloc] init]; 
second.mainView = self; 
[second addButton]; 
[second release]; 
}