以编程方式添加的视图对象未显示在故事板中

时间:2014-04-29 20:07:40

标签: ios objective-c xcode-storyboard

我看不到我以编程方式添加的任何视图对象。我需要将它们与IBAction和/或IBOutlet相关联,但不能ctrl-click-drag,我不能。

例如,我在viewDidLoad中有这个:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(789, 60, 215, 72)];
[imageView setAnimationImages:imgListArray];
[self.view addSubview:imageView];

动画显示在模拟器中,但不在故事板中。

如何让这些对象显示在故事板中(首选),或者以编程方式将它们链接到IBActions/Outlets

2 个答案:

答案 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:

在故事板中设置动作连接完全相同,但现在你自己做了。