我看不到我以编程方式添加的任何视图对象。我需要将它们与IBAction
和/或IBOutlet
相关联,但不能ctrl-click-drag
,我不能。
例如,我在viewDidLoad
中有这个:
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(789, 60, 215, 72)];
[imageView setAnimationImages:imgListArray];
[self.view addSubview:imageView];
动画显示在模拟器中,但不在故事板中。
如何让这些对象显示在故事板中(首选),或者以编程方式将它们链接到IBActions/Outlets
?
答案 0 :(得分:1)
正如@vikingsegundo所说,Image Builder允许您将对象添加到视图中,然后将它们连接到类中的IBOutlets和IBActions,但如果以编程方式添加内容,那么就图像生成器/故事板而言,您就是独立的。 / p>
你仍然可以创建一个iVar或属性(首选)来存储对象的引用,但是你不需要IBOutlet标记,所以
@property (strong,nonatomic) UIImageView *imageView;
然后
self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(789, 60, 215, 72)];
[self.imageView setAnimationImages:imgListArray];
[self.view addSubview:self.imageView];
您还可以通过代码向对象添加动作处理程序(相当于按住Ctrl键拖动到IBAction方法)
[self.aButton addTarget:self action:@selector(buttonEventHandler) forControlEvents: UIControlEventTouchUpInside];
答案 1 :(得分:0)
要将代码实例化对象设置为实例变量,只需设置它即可。像这样:
// your code
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(789, 60, 215, 72)];
[imageView setAnimationImages:imgListArray];
[self.view addSubview:imageView];
// and then:
self.myImageView = imageView; // assumes you've got a `@property` called `myImageView`
在故事板中构建插座连接的原因完全相同,但现在你自己做了。
要设置代码实例化控件的操作,请调用addTarget:action:forControlEvents:
。
在故事板中设置动作连接完全相同,但现在你自己做了。