使用 IBOutlets 将视图控制器初始化为自定义视图

Initialising view controller with IBOutlets to custom views

我正在尝试找到一种方法来将具有 IBOutlets 的视图控制器初始化为我在 XIB 中创建的自定义视图。

这是我初始化 class 的代码:

MyContentViewController *pageContentViewController = [[MyContentViewController alloc] init];
self.pageContent = pageContentViewController;
[pageContentViewController view];

MyContentViewController 具有以下属性:

 @interface MyContentViewController : UIViewController

 @property (nonatomic, weak) IBOutlet MyContentView *topLeftView;
 @property (nonatomic, weak) IBOutlet MyContentView *topRightView;
 @property (nonatomic, weak) IBOutlet MyContentView *bottomLeftView;
 @property (nonatomic, weak) IBOutlet MyContentView *bottomRightView;

在 MyContentViewController xib 中,我有 4 个视图,我已将它们设置为 MyContentView,并将上面的 IBOutlet 连接到情节提要中的视图。

自定义视图定义如下:

#import <UIKit/UIKit.h>

@interface MyContentView : UIView

@property (nonatomic, strong) IBOutlet UILabel *labelView;

 @end

然而,当我 运行 应用程序时,我得到了我在 MyContentViewController xib 中添加的 4 个视图。但是 none 他们显示自定义 UIView 中的 UILabel。

我在 MyContentView 中添加了以下内容:

- (void)awakeFromNib {
    NSLog(@"VIEW AWAKE");
}

这将被打印出来,以便加载视图。但是,如何使用 4 个 IBOutlets 显示它们。

这是应用程序 运行 视图的图片。 4 个视图上没有标签:

我看到您的 "MyContentView" 有自己的笔尖。从另一个 nib 加载具有 nib 布局的自定义 UIView class 有点复杂。

我认为这个blog post包含答案