繁体   English   中英

从另一个UIViewController呈现UIViewController

[英]Present UIViewController from another UIViewController

我有一个名为ViewControllerHome的UIViewController,当用户触摸屏幕上的图像时,我想显示第二个视图,即会员卡。 我从图片的触感开始做以下事情:

membershipCardViewController = [[MembershipCardViewController alloc] initWithNibName:@"MembershipCard" bundle:nil];
[self presentViewController:membershipCardViewController animated:YES completion:nil];

当代码执行时,在presentViewController行上引发异常。

我有一个带有ViewController的.xib,其中包含一个视图和会员卡的UIImageView。 我将ViewController的类设置为MembershipViewController。

一旦显示出来,我将一触即发。

谁能告诉我我想念的东西吗? 我以为我已经正确地提出了视图控制器的所有步骤。

谢谢您的帮助。

在MembershipCardViewController的nib文件中,其视图(它所控制的所有视图)都连接到视图控制器的视图出口。

在此处输入图片说明

要执行此控件,请从文件所有者拖动到要与其连接的视图(在本例中为灰色视图)

在此处输入图片说明

您应该得到以下信息:

在此处输入图片说明

文件所有者应指向您的MembershipCardViewController。 每个视图控制器都有一个指向视图的指针。 我猜想您在删除了一个股票后就添加了一些自定义视图。 控制从文件所有者拖动到该视图以创建出口。 (如果此出口返回nil,则将引发异常)。

为了安全起见,请确保文件的所有者(位于笔尖中)指向MembershipCardViewController(这可能不是问题,但听起来您可能是从一个空的笔尖开始)。

在此处输入图片说明

为此,请单击文件所有者,然后在右侧选择身份检查器。 确保该类显示MembershipCardViewController

我之前回答了另一个问题, 我是说initWithNibName:bundle用于手动加载nib文件,而initWithCoder将用作替代吗?

这说明了实际情况。

XIB的目的是存档控制器的视图。 设置控制器类只是所需信息的一部分,您还需要在控制器和视图之间连接任何IBOutlet关系。

作为标准, UIViewController任何子类都提供一个名为view的出口。 您需要确保已连接。 否则,当您加载XIB时,不会设置view ,并且会出现异常。

有多种建立连接的方法。 检查一下

另请参见已加载的笔尖但视图插座未设置新的接口构建器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM