我无法连接代码和.xib文件之间的点。
如果我想以编程方式向我的视图控制器添加一系列UIButtons
,我将如何从单独的类中执行此操作?
例如,如果我有MainViewController.m
(在Xcode中设置为根视图控制器),如何从UIButton
向该视图控制器添加SecondViewController.m
?这甚至可能吗?
我基本上希望将所有“用户界面”代码放在一个单独的类中。
由于
答案 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];
}