获取当前正在查看的 iPhone xib 的名称

Posted

技术标签:

【中文标题】获取当前正在查看的 iPhone xib 的名称【英文标题】:Get the name of the current iPhone xib being viewed 【发布时间】:2010-11-18 19:46:48 【问题描述】:

我有 3 个 xib 文件连接到同一个类以减少重复编码。但是,当新的 nib 文件加载时(即在 ViewDidLoad 方法中),我想做一些不同的事情。我考虑过使用 if 语句将当前显示的 xib 的名称与字符串进行比较。在一天的大部分时间里,我一直在试图弄清楚如何做到这一点,但我没有任何运气。如果这让你感到困惑,这里有一些伪代码:

if (currentXibInDisplay == @"XibFileName1")
   // Do This...
else if (currentXibInDisplay == @"XibFileName2")
   // Do This...

有办法做到这一点,对吧?这看起来很简单,但我现在很困惑。感谢您提供的任何信息。

【问题讨论】:

【参考方案1】:

我尝试使用它

self.view.nibName;

但是不行,试试这个

self.nibName;

【讨论】:

【参考方案2】:

您可以使用笔尖名称

如果你说:NSString *name = self.view.nibname 你可以用

`[name isEqual:@"XIBName"]`

【讨论】:

视图是在一个视图中还是分散的? 因为如果这些子视图在一个单一视图中,..你可以说'self.view.viewControllers 非常感谢福子。我使用 self.view.nibname 尝试了您的代码,但没有在视图中找到 nibname。我使用 self.nibname 进行了尝试,并且成功了。这正是我所需要的。感谢大家的意见。 但是self.nibname总是显示nib的名字,用在initWithNib:方法中。如果您通过 [[NSBundle mainBundle] loadNibNamed:owner:options:] self.nibName 从 bundle 重新加载控制器视图,请保持与原件相同。【参考方案3】:

您正在加载的视图控制器具有initWithNibNamed: 方法,您可以在那里覆盖并存储要加载的XIB。

【讨论】:

这种方法的问题是笔尖名称参数可以为nil。 我不确定我是否理解正确。将新的 XIB 实际加载到视图中没有问题。问题是,如果加载了一个特定的视图,我希望在 ViewDidLoad 方法中完成一些额外的工作。但我不知道如何检测该 xib 是否已加载。如果我错过了理解你,我很抱歉。这是我第一个真正的 ios 项目。如果你能指出一个例子或其他东西,我将不胜感激。 我尝试按照 if([self.nibName compare:@"CompareisonString"])... 的方式做一些事情......但这没有帮助。无论比较字符串中的内容是什么,这始终是“真”。 比较:不起作用的原因是如果它们相同则返回0。是的,使用 nibname 是正确的解决方案,我的错 感谢您的解释。我几乎自己想通了。我只是使用了错误的方法调用。那好吧。至少我在学习一些东西。【参考方案4】:

ViewController 子类有一个可以检查的 nibName 字符串属性:

[self.nibName isEqualTo:@"XIBFileName"]

【讨论】:

以上是关于获取当前正在查看的 iPhone xib 的名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用自动布局的情况下以 XIB/故事板大小查看手机尺寸

展开 xib 布局以填满屏幕

无法将文件的所有者连接到查看

Xcode 为通用应用程序构建名称后缀不正确的 nib 文件

根据设备屏幕从 xib 文件中获取大小参数

在 4 英寸 iphone 上查看时 UIImageView 正在向下移动