2

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

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

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

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

4

1 回答 1

2

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

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

希望这个屏幕截图能更好地解释这一点: 设置视图控制器 nib

UIViewController您还可以通过使用nib 命名约定来简化一些事情。如果你给你的 nib 赋予与视图控制器相同的文件名,那么你可以指定nilnibName:. 例如,如果你命名你的笔尖,ViewController2.xib那么你可以这样做:

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

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

于 2013-09-03T09:35:28.337 回答