2010-11-18 48 views
2

我有3个xib文件连接到同一个类,以减少重复编码。但是,当新的nib文件加载时(即在ViewDidLoad方法中),我想完成不同的工作。我想过做一个if语句来比较当前显示的xib的名字和字符串。我一直试图找出如何在一天中的大部分时间这样做,但我一直没有运气。这里有一些伪代码如果让你困惑:获取当前正在查看的iPhone xib的名称

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

有一种方法可以做到这一点,对吗?这看起来很简单,但我现在很困难。感谢您提供的任何信息。

回答

3

可以使用nibname

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

`[name isEqual:@"XIBName"]` 
+0

是在单一视图中还是分开显示? – 2010-11-18 20:25:01

+0

因为如果这些子视图是在单视图中,..你可以说'self.view.viewControllers << - NSArray' – 2010-11-18 20:25:35

+3

非常感谢。我使用self.view.nibname尝试了你的代码,但它没有在视图下找到nibname。我尝试使用self.nibname,它的工作。这正是我需要的。谢谢大家的意见。 – Brian 2010-11-18 20:47:42

0

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

+0

这种做法的问题是,笔尖名paramater可以是零。 – tia 2010-11-18 20:24:39

+0

我不确定我是否正确理解你。我没有遇到实际将新的XIB加载到视图中的问题。问题是,如果加载了一个特定的视图,我想在ViewDidLoad方法中完成一些额外的工作。但我不知道如何检测该xib是否已加载。如果我想念你,我很抱歉。这是我第一个针对iOS的真正项目。如果你能指点我的例子或者我会非常感激的。 – Brian 2010-11-18 20:31:41

+0

我试着做一些沿着if([self.nibName比较:@“CompareisonString”])的行......但这没有帮助。不管比较字符串是什么,总是“真”。 – Brian 2010-11-18 20:34:39

5

我试图用

self.view.nibName; 

使用坡口,但它不会工作,而不是试试这个

self.nibName; 
0

的ViewController子类有nibName字符串属性,你可以对证:

[self.nibName isEqualTo:@"XIBFileName"]