两个 nib 文件用 .h 和 .m 连接?

Posted

技术标签:

【中文标题】两个 nib 文件用 .h 和 .m 连接?【英文标题】:Two nib files connect with .h and .m? 【发布时间】:2013-05-29 07:39:21 【问题描述】:

我在 iphone 中开发了一个应用程序,现在我还需要在 ipad 上创建相同的应用程序,我有以下文件

LoginViewController.h
LoginViewController.m
LoginViewController.xib

now i added new file for ipad:

LoginViewController~ipad.xib

现在我收到一个错误:

由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“LoginViewController”笔尖,但未设置视图出口。'

【问题讨论】:

检查这个:-***.com/questions/16787664/… LoginViewController~ipad.xib->view 需要在 Interface builder 中设置为 File Owner's->view 属性。 这篇文章:***.com/questions/4763519/… 解释了一切 【参考方案1】:

还有一些步骤要走:-

LoginViewController~ipad.xib 那样为 Ipad 创建新的 Xib 并打开它。

单击文件所有者--> 如下所示:-

现在您的 ipad xib 也与您的 Loginviewcontroller customeClass 一起使用

现在您只需要检查一下 IsIphone 或 Ipad,例如:-

#import "Homeviewcontroller.h"

#import "LoginViewController.h"

#define isIpad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) //在上面定义实现方法

@implementation Homeviewcontroller

现在,如果你想在装箱后加载 newNib,就像上面的图片一样,你可以像下面这样加载:-

if(isIpad)

   LoginViewController *ObjLoginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController~ipad" bundle:nil];

else

   LoginViewController *ObjLoginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];

编辑

将您的 FileOwner 连接到主视图,例如:-

【讨论】:

Nitin 你给我条件的代码,它会在哪里定义?在.m? Nitin 我把你的代码放在哪个文件中,我没有使用“Homeviewcontroller.h”,基本上我是 xcode 的新手。 你把 loginviewcontroller 放在哪里了? 我的意思是在 .h 或 .m 文件或其他地方? 你想在哪里推送你的 loginviewcontroller 你把代码放在按钮点击事件中你想登录viewcontroller 然后在 .m 文件按钮点击事件中你应该把我在回答中提到的代码放

以上是关于两个 nib 文件用 .h 和 .m 连接?的主要内容,如果未能解决你的问题,请参考以下文章

目标c两个笔尖文件[关闭]

为 iPhone 4 和 iPhone 5 使用两个不同的 nib 文件

nsobject 控制器跨两个 nib (xib) 文件链接。声明 nib 实例化

加载不同的 Nib 文件

在 iOS 开发中,您可以拥有两个版本的 .nib 文件并使用各自的方案编译每个版本吗?

XCode 不会通过控制点击来绑定 nib 和源头文件