Objective-C:以编程方式从另一个类中添加UIButton
我无法连接代码和.xib文件之间的点。Objective-C:以编程方式从另一个类中添加UIButton
如果我想以编程方式将一系列UIButtons
添加到我的视图控制器,我将如何从一个单独的类执行此操作?
例如,如果我有MainViewController.m
,它被设置为Xcode中的根视图控制器,我怎样才能将UIButton
从SecondViewController.m
添加到该视图控制器?这甚至有可能吗?
我基本上想把我所有的“用户界面”代码放在一个单独的类中。
感谢
要做到这一点,创建一个UIButton *myButton
编程,然后调用[mainViewController addSubview:myButton];
。这可能意味着您需要在SecondViewController
类中存储MainViewController *
资产。
为UIButton
例如重要的方法和属性(基本上,只是看看的文件,但这里有一组最小的东西,让你开始):
+[UIButton buttonWithType:buttonType]
- 如果你确保”重新远程执行任何自定义在这里使用UIButtonTypeCustom
(它不给你任何默认背景图片或以其他方式必须nil
出)setFrame:
- 相对于其容器的按钮,可用性的位置,并设置大小原因width
和height
应至少为44
像素(如here所述)。setTitle:forState:
-UIControlStateNormal
将作为对其他国家的默认属性,所以你可能只需要在此处设置的文本setBackgroundImage:forState:
- 使用UIControlStateNormal
和UIControlStateHighlighted
/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];
}
为什么?你在XIB,控制器和希望有一个单独的模型中有你的看法。为什么控制器和视图互相捅戳? – bryanmac