视图控制器和nib是否支持继承

时间:2011-04-11 10:49:57

标签: iphone

我正在为我的应用程序支持的每个方向创建2个视图控制器和2个笔尖 - 纵向和横向按照apple的建议。

问题是我将有大量重复的代码 - 继承工作在接口构建器中吗?

即。我可以在基类中声明一个iboutlet标签并将它用于两个笔尖吗?

编辑:我有2个控制器,都是从basecontroller继承的。我可以将我的IBactions和IBOutlets以及数组和tableview委托代码放在基础中,然后从2个不同的笔尖链接它吗?我试图摆脱一些重复

2 个答案:

答案 0 :(得分:1)

问:我可以在基类中声明一个iboutlet标签,并将它用于两个笔尖吗?

答:是的,它会起作用,使用initWithNibName用所需的Nib(xib)初始化控制器。

答案 1 :(得分:0)

我刚发布here但我认为你也可以从中受益。

我知道这是一个老线程,但我刚刚发现了一篇令人难以置信的博文here

基本上,您必须遍历父类的所有视图,并将它们作为子视图添加到子类中。以下是我在项目中实施的方法:

// ChildViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self addSubviewsFromSuperclass];  
}

// ParentViewController.h
- (void)addSubviewsFromSuperclass;   

// ParentViewController.m
- (void)addSubviewsFromSuperclass
{
    UIView *selfView = self.view;
    UIView *nibView = nil;
    @try
    {
        nibView = [NSBundle.mainBundle loadNibNamed:NSStringFromClass([self superclass]) owner:self options:nil][0];
    }
    @catch (NSException *exception)
    {
        NSLog(@"Something exceptional happened while loading nib:\n%@", exception);
    }
    self.view = selfView;
    for (UIView *view in nibView.subviews)
    {
        [self.view addSubview:view];
    }
}

addSuviewsFromSuperclass 方法不是我的编码。我必须完全赞赏我上面提到的博客文章的作者。下载他的示例项目,您将在他的JMViewController.m中找到它。