2011-12-28 127 views
6

我正在開發iOS 4應用程序,並且我開發了一些我想在其他項目中使用的類。繼承UIViewController類和XIB

其中一個類叫做MapViewController,它是一個UIViewController子類。這個類使用我用界面構建器創建的XIB文件。

我想知道如果在另一個項目中使用MapViewController作爲新班級的超級班級,如何使用它關聯的XIB?

我想重用MapViewController及其XIB,但我不知道是否必須對XIB文件做一些特殊的處理。

我不知道該如何解釋。如果你需要更多的細節,請告訴我。

UPDATE:

我想創建一個新的類,從MapViewController繼承,像這樣:

... 
@interface NewMapViewController : MapViewController { 

... 

而且,現在如果我想繼續使用相同的XIB(從一方MapViewController),我該怎麼辦?

+0

讓我試着去了解,你想:如果您使用的初始化爲NewMapViewController

NewMapViewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { NSLog(@"Subclass initWithNibName called"); self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } 

初始化您NewMapViewContoller像它看起來相當簡單的我能夠使用你的MapViewController和他的XIB,但是如果你需要一些特殊的行爲,你不想使用XIB? – Peres 2011-12-28 15:19:30

+0

目前尚不清楚確切的問題是什麼。 – Max 2011-12-28 15:52:06

+1

對不起。我剛剛更新了我的問題,並提供了更多細節。 – VansFannel 2011-12-28 16:00:49

回答

6

既然你要繼承MapViewController,你的MapViewController成爲超級類。你也有MapViewController.xib。

//Nib of super class is MapViewController 
NewMapViewController *nmapController = [[NewMapViewController alloc] initWithNibName:@"MapViewController" bundle:[NSBundle mainBundle]]; 
+0

不,它不。我試過了。事實上,initWithNibName永遠不會被調用。 – 2013-01-22 00:45:11

+0

@JimThio我編輯了我的答案。我測試了這個,它適用於我。嘗試一下,讓我知道。 – MadhavanRP 2013-01-22 06:26:54

+0

在iOS 9.2中爲我工作,謝謝! – webo80 2016-01-13 09:43:45