2010-11-18 28 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"]