nib 文件中的 uiviewcontroller

Posted

技术标签:

【中文标题】nib 文件中的 uiviewcontroller【英文标题】:uiviewcontroller in nib file 【发布时间】:2012-01-21 07:17:26 【问题描述】:

我正在研究 uiviewcontroller 苹果指南,其中提到了 uiviewcontroller 的两种方法,其中一种方法允许通过拖放 viewcontroller 对象来存储 uiviewcontroller 以存储在 nib 文件中……但我不明白拖放后它是什么接下来我应该创建新的 `UIVC 类并引用我拖放到 nib 文件中的那个对象吗??

我们已经这样做了,通常会创建 UIVC 类并分配给 nib 文件所有者。

这让我很困惑,请帮忙。

提前致谢,如果你在这个问题中发现我是新手,请忽略任何愚蠢的错误。

【问题讨论】:

【参考方案1】:

这是一个如何将视图控制器放入笔尖的示例。

    从空笔尖 (XIB) 开始。

    在您的 nib 中选择文件的所有者占位符。在 Identity Inspector 中,将 File's Owner 的类设置为您的应用程序委托类(可能是 AppDelegate 或类似的东西)。

    UIWindow 拖放到您的笔尖。将 File's Owner 的 window 出口连接到这个窗口对象。

    创建您的 UIViewController 子类。我们就叫它HazelViewController吧。

    UIViewController 拖放到您的 nib 文件中。在 Identity Inspector 中,将此对象的自定义类设置为 HazelViewController

    将窗口对象的rootViewController出口连接到HazelViewController对象。

    UIView 拖放到您笔尖的窗口对象上。将HazelViewControllerview 出口连接到此视图。

    将其他用户界面对象拖放到此视图中。根据需要将它们连接到HazelViewController 对象的出口或操作。

    AppDelegateapplication:didFinishLaunchingWithOptions:方法中,加载nib,使用AppDelegate对象作为文件的所有者:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options 
        [[NSBundle mainBundle] loadNibNamed:@"myNib" owner:self options:nil];
        [self.window makeKeyAndVisible];
        return YES;
    
    

【讨论】:

第 3 步需要在 AppDelegate.h 中的 window preperty 声明中添加“IBOutlet”,否则它不会出现在 FileOwner 出口列表中。 另一个说明:它会显示没有任何 UIViewController 和 UIView 的窗口(步骤 4-8)

以上是关于nib 文件中的 uiviewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件

将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController

NSObject 用 nib 加载 UIView 但文件所有者是 UIViewController

Nib 创建的视图保留文件的所有者防止 UIViewController 的释放

Swift - 从 Nib 实例化总是返回 UIViewController 类型而不是动态类型

使用 IBAction UIViewController 弹出 UIViewController