Bạn có nhiều tùy chọn, tùy thuộc vào cách lớp "baseView" được sử dụng và tích hợp vào ứng dụng của bạn. Không rõ bạn dự định sử dụng lớp này như thế nào - như chế độ xem trong lớp con UIViewController hoặc như một thành phần mô-đun có thể tái sử dụng có nghĩa là được khởi tạo nhiều lần trong suốt ứng dụng của bạn, để sử dụng trong nhiều bộ điều khiển chế độ xem khác nhau.
Nếu chế độ xem của bạn được coi là chế độ xem duy nhất trong lớp con UIViewController, thì Phonitive là chính xác - hãy gói nó cùng với tệp .xib của lớp con UIViewController và sử dụng viewDidLoad của UIViewController để thực hiện lần khởi tạo cuối cùng.
Nhưng nếu bạn muốn lớp View của mình là một thành phần con được sử dụng lại nhiều lần trong các bộ điều khiển chế độ xem khác nhau, được tích hợp thông qua mã hoặc thông qua việc đưa vào tệp .xib cho bộ điều khiển khác, thì bạn cần triển khai cả phương thức initWithFrame: init vàakenFromNib, để xử lý cả hai trường hợp. Nếu quá trình khởi tạo nội bộ của bạn luôn bao gồm một số đối tượng từ .xib, thì trong initWithFrame, bạn sẽ cần tải .xib theo cách thủ công để hỗ trợ các lớp "khách hàng" muốn tạo tiện ích con của bạn thông qua mã. Và tương tự như vậy, nếu tệp .xib có chứa đối tượng của bạn thì bạn sẽ cần đảm bảo rằng bạn gọi bất kỳ quá trình hoàn thiện mã bắt buộc nào từakenFromNib.
Dưới đây là ví dụ về cách tạo thành phần lớp con UIView với thiết kế giao diện người dùng trong nib.
MyView.h:
@interface MyView : UIView
{
UIView *view;
UILabel *l;
}
@property (nonatomic, retain) IBOutlet UIView *view;
@property (nonatomic, retain) IBOutlet UILabel *l;
MyView.m:
#import "MyView.h"
@implementation MyView
@synthesize l, view;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
- (void) awakeFromNib
{
[super awakeFromNib];
[self addSubview:self.view];
}
- (void) dealloc
{
[l release];
[view release];
[super dealloc];
}
Đây là giao diện của tệp nib (ngoại trừ chủ sở hữu của tệp đó cần được thay đổi thành lớp MyView).

hãy chắc chắn kết nối cả cửa hàng chế độ xem và nhãn với Chủ sở hữu tệp. Đó là nó! Mẫu để tạo các tiện ích UIView có thể sử dụng lại.
Điều thực sự gọn gàng về cấu trúc này là bạn có thể đặt các thể hiện của đối tượng MyView của mình trong các tệp nib khác, chỉ cần đặt một UIView ở vị trí / kích thước bạn muốn, sau đó thay đổi lớp trong trình kiểm tra danh tính (CMD-4) thành MyView, và bùng nổ, bạn đã có một phiên bản tiện ích con của mình ở bất kỳ chế độ xem nào bạn muốn! Cũng giống như các đối tượng UIKit, bạn có thể triển khai các giao thức ủy quyền để các đối tượng sử dụng tiện ích con của bạn có thể được thông báo về các sự kiện thú vị và có thể cung cấp dữ liệu để hiển thị trong tiện ích con để tùy chỉnh nó.