笔尖中的UIView没有连接到IBOutlets

时间:2013-09-03 09:15:51

标签: ios xcode

我以这种方式在屏幕上添加了一个UIView:

ViewController2 *detailViewController = [[ViewController2 alloc] initWithNibName:@"MJDetailViewController" bundle:nil];
[self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationFade];

因为MJDetailViewController是一个nib并且拥有一个UIView,所以我创建了一个自定义类UIView并将其选为检查器中视图的类。加载窗口时,UIButton会在已创建的类中执行操作,但IBOutlets不起作用。即使我决定以可编程方式添加UIButton,它也不会出现在屏幕上。为什么是这样?

我想过将UIView更改为UIViewController,但它不会起作用,因为你不能用动画来呈现它。

1 个答案:

答案 0 :(得分:2)

我怀疑你没有正确设置nib对象。

除了设置UIView子类的类之外,还需要配置“文件所有者”并将视图连接到它。您可以通过选择文件所有者并设置其“类”来完成此操作(这与设置视图的类相同)。在您的情况下,文件所有者的类应为ViewController2

希望此屏幕截图更好地解释了这一点: Setting up a view controllers nib

此外,您可以使用UIViewController nib命名约定来简化一些事情。如果您为nib指定与视图控制器相同的文件名,则可以将nil指定为nibName:。例如,如果您为笔尖ViewController2.xib命名,那么您可以这样做:

ViewController2 *detailViewController = [[ViewController2 alloc] initWithNibName:nil bundle:nil];

这种方法更可取,因为它意味着nib文件名成为调用代码不需要知道的实现细节。