我以这种方式在屏幕上添加了一个UIView:
ViewController2 *detailViewController = [[ViewController2 alloc] initWithNibName:@"MJDetailViewController" bundle:nil];
[self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationFade];
因为MJDetailViewController是一个nib并且拥有一个UIView,所以我创建了一个自定义类UIView并将其选为检查器中视图的类。加载窗口时,UIButton会在已创建的类中执行操作,但IBOutlets不起作用。即使我决定以可编程方式添加UIButton,它也不会出现在屏幕上。为什么是这样?
我想过将UIView更改为UIViewController,但它不会起作用,因为你不能用动画来呈现它。
答案 0 :(得分:2)
我怀疑你没有正确设置nib对象。
除了设置UIView子类的类之外,还需要配置“文件所有者”并将视图连接到它。您可以通过选择文件所有者并设置其“类”来完成此操作(这与设置视图的类相同)。在您的情况下,文件所有者的类应为ViewController2
。
希望此屏幕截图更好地解释了这一点:
此外,您可以使用UIViewController
nib命名约定来简化一些事情。如果您为nib指定与视图控制器相同的文件名,则可以将nil
指定为nibName:
。例如,如果您为笔尖ViewController2.xib
命名,那么您可以这样做:
ViewController2 *detailViewController = [[ViewController2 alloc] initWithNibName:nil bundle:nil];
这种方法更可取,因为它意味着nib文件名成为调用代码不需要知道的实现细节。