Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从路径加载nib_Ios_Objective C - Fatal编程技术网

Ios 从路径加载nib

Ios 从路径加载nib,ios,objective-c,Ios,Objective C,目前,我一直在使用[NSBundle mainBundle]loadNibNamed:以编程方式在我的应用程序中加载NIB。我只想把我所有的笔尖都包含在一个子文件夹中(以及它们引用的图像),但似乎几乎不可能加载它们。loadNibNamed不允许指定路径。我找了很多,找不到合适的方法。我试过的其他方法都有例外。 我试着从文件中加载数据并取消归档,但它说这是一个无法理解的归档。 UINib与NSBundle具有相同的问题 必须有一种方法来指定文件路径,就像加载任何其他文件一样 我希望最终的内容是一

目前,我一直在使用
[NSBundle mainBundle]loadNibNamed:
以编程方式在我的应用程序中加载NIB。我只想把我所有的笔尖都包含在一个子文件夹中(以及它们引用的图像),但似乎几乎不可能加载它们。loadNibNamed不允许指定路径。我找了很多,找不到合适的方法。我试过的其他方法都有例外。 我试着从文件中加载数据并取消归档,但它说这是一个无法理解的归档。
UINib
NSBundle
具有相同的问题

必须有一种方法来指定文件路径,就像加载任何其他文件一样

我希望最终的内容是一个
NSArray
,就像
loadNibNamed:
返回的一样

任何见解都会有所帮助

我得到的最接近的方法是使用
[NSBundle bundleWithPath:
并指定完整路径。它表示路径尚未加载,并引发异常。为什么它没有加载?

我认为您得到的是“尚未加载”,因为您没有加载捆绑包[bundle load]。还要检查名称是否区分大小写,因为模拟器通常不区分大小写,而设备则不区分大小写。试试这个,看看你怎么样

问候,,
Ravi

此子文件夹是否仍在应用程序捆绑包中?该文件夹位于捆绑包根目录中。它也在复制捆绑资源下。同一根目录中的所有其他文件夹都可以正常加载。当我查看应用程序内部时,新文件夹及其所有内容都在那里。nib文件是相同的。我只是创建了一个新文件夹,移动了NIB,并用Xcode重新链接了资源。当我意识到loadNibNamed:无法使用路径时,我开始搜索并尝试各种解决方案。但是到目前为止没有一个有效。该文件夹从主捆绑包向下一级命名为nibs。@user1137704,如果这有助于解决问题,请接受答案。我相信这是正确的做法。然而,我的NIB只是在一个目录中,而不是在一个包中。当我调用[bundle load]时,它返回false,我仍然得到“尚未加载”。在这种情况下,是否可以将目录视为NSBundle?很抱歉耽搁了。@user1137704,如果您的nib在同一个项目或捆绑包中,则不需要指定任何路径。你只需要用它的名字来调用Nib。项目子目录仅用于可视化表示,但它们都暴露于相同的可执行路径;我在Xcode之外创建了一个文件夹,并将其添加到Xcode中作为文件夹引用(等等)。因此,NIB不再位于主捆绑包根目录中。我喜欢将我的资源明确地组织起来,这样当我在其他应用程序中使用它们时,就不会太混乱。我想对NIB也这么做。在这一点上,我不相信这是我试图实现它的方式,因为NIB和bundle的功能性似乎是硬编码的,只是从它们的根开始工作。你不能在app.app/some_folder/NibName.xib中有nib,然后从应用程序包中加载它。它必须直接位于YourApp.app/或实际的子包下,而不仅仅是一个目录。