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

时间:2011-10-07 05:07:28

标签: objective-c class uibutton

我无法连接代码和.xib文件之间的点。

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

例如,如果我有MainViewController.m(在Xcode中设置为根视图控制器),如何从UIButton向该视图控制器添加SecondViewController.m?这甚至可能吗?

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

由于

2 个答案:

答案 0 :(得分:0)

为此,请以编程方式创建UIButton *myButton,然后致电[mainViewController addSubview:myButton];。这可能意味着您需要在MainViewController *类中存储SecondViewController属性。

UIButton实例的重要方法和属性(基本上,只需看一下文档,但这里有一小部分内容可以帮助您入门):

  • +[UIButton buttonWithType:buttonType] - 请确保您是否正在进行任何远程自定义操作,以便在此使用UIButtonTypeCustom(它不会为您提供任何默认背景图片或以其他方式{{1}

  • nil - 将按钮相对于其容器放置并设置尺寸,出于可用性考虑,setFrame:width应至少为height像素(如上所述here)。

  • 44 - setTitle:forState:也将充当其他州的默认属性,因此您可能只需要在此处设置文字

  • UIControlStateNormal - 主要使用setBackgroundImage:forState:UIControlStateNormal / UIControlStateHighlighted UIControlStateSelected,如果您希望将其显示为灰色或在任何时候无法访问

  • UIControlStateDisabled - 用于按钮文字旁边的图标(如向下箭头指向“保存”或“向上加载”等)

  • setImage:forState:setEnabled:setHidden: - 不同按钮状态之间的转换。点击按钮时会自动setSelected:

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

哦,如果你使用buttonClicked:,一旦将[[UIButton alloc] initWith...]添加到[myButton release],就不要忘记mainViewController

答案 1 :(得分:0)

使用此

 #import "MainViewController.h"

@interface SecondViewController
{
  MainViewController *mainView;
}

@property(nonatomic, retain)  MainViewController *mainView;

-(void)addButtons;

在您的实施中

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