【问题标题】:Inherit UIViewController class and XIB继承 UIViewController 类和 XIB
【发布时间】:2011-12-28 15:14:33
【问题描述】:

我正在开发一个 iOS 4 应用程序,并且我开发了一些我想在其他项目中使用的类。

其中一个名为MapViewController 的类是 UIViewController 子类。此类使用我使用界面生成器创建的 XIB 文件。

我想知道是否在另一个项目中使用MapViewController 作为新类的超类,我如何使用它关联 XIB?

我想重用MapViewController 和它的XIB,但我不知道我是否需要对XIB 文件做一些特别的事情。

我不知道如何解释。如果您需要更多详细信息,请告诉我。

更新:

我想创建一个继承自MapViewController 的新类,如下所示:

...
@interface NewMapViewController : MapViewController {

...

而且,现在如果我想继续使用同一个 XIB(来自MapViewController 的那个),我该怎么办?

【问题讨论】:

  • 让我试着理解一下,你希望能够使用你的 MapViewController 和他的 XIB,但是如果你需要一些特殊的行为你不想使用 XIB?
  • 不清楚具体是什么问题。
  • 对不起。我刚刚用更多细节更新了我的问题。
  • 你到底想从视图控制器继承什么?

标签: iphone objective-c ios uiviewcontroller


【解决方案1】:

由于您将从MapViewController 继承,因此您的MapViewController 成为超类。而且你还有 MapViewController.xib。如果您使用 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:

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

【讨论】:

  • 不,它没有。我试过。事实上,initWithNibName 从未被调用过。
  • @JimThio 我已经编辑了我的答案。我测试了这个,它对我有用。试试看,让我知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多