使用插座子类化主视图控制器

Posted

技术标签:

【中文标题】使用插座子类化主视图控制器【英文标题】:Subclassing a main view controller with outlets 【发布时间】:2011-12-18 21:26:34 【问题描述】:

我想创建一个主视图控制器来处理自定义导航栏及其行为。

然后,我想继承这个新类以使用它的行为并为我的每个 ViewController 链接一个“contentView”IBOutlet。

这是我的 BaseViewController.xib:

TestViewController.xib:为其父级链接“contentView”出口

TestViewController.h:继承自 BaseViewController

#import "BaseViewController.h"

@interface TestViewController : BaseViewController

@end

TestViewController.m:应该使用 TestViewController.xib 中的 outlet

- (id)init

    self = [super init];
    if (self) 
        [[NSBundle mainBundle] loadNibNamed:@"TestViewController"
                                      owner:self
                                    options:nil];
    

    return self;

显然,我希望 MainViewController 中的绿色条带有白色视图和 TestViewController 中的标签,但它实际上不起作用,结果如下:

如果在 TestViewController.xib 中,我将“视图”出口与视图链接,它实际上覆盖了这个屏幕,我没有来自 MainViewController 的绿色条,所以我猜我的导入工作正常,但我不能不明白为什么它不能与 contentView 一起工作。

有什么想法吗?

干杯!

西里尔

【问题讨论】:

【参考方案1】:

您必须决定哪个控制器应该控制包含内容的视图。

或者你有基础视图控制器控制它 - 在这种情况下你不需要子类化它。只需添加UIView 的子类作为子视图并在那里执行所有逻辑。视图也可以有自己的 nib 文件。 或者你子类化你的基本视图控制器 - 但是你不能有一个单独的视图控制器笔尖。您可以在子类(也是视图控制器)中执行所有视图控制器逻辑(数据源等),但它将使用基本视图控制器的 nib。

【讨论】:

以上是关于使用插座子类化主视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

iOS:使用 nib 子类化 UITableViewCell,进入 UIView(不是视图控制器)子类

笔尖已装好,插座不见了

子类化视图控制器:前向声明

子类化 UIView/UIViewController

用视图控制器类继承视图:新类会实例化基类的 UI 对象吗?

子类化 UISplitViewController 时出现奇怪的错误