获取当前正在查看的 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/故事板大小查看手机尺寸