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
拖放到您笔尖的窗口对象上。将HazelViewController
的view
出口连接到此视图。
将其他用户界面对象拖放到此视图中。根据需要将它们连接到HazelViewController
对象的出口或操作。
在AppDelegate
的application: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 的释放