我想使用 Interface Builder 设计一个 UIView 和一些子视图(UIWebView、UIToolbar、一些 UIBarButtonItems、进度指示器等等),但我认为传统上没有必要这样做,通过使用 UIViewController,使用presentViewController:animated
等等
所以,我创建了一个自定义类, .h
文件代码如下:
@interface FileInteractionManager : NSObject {
}
@property (nonatomic, retain) IBOutlet UIView *fileView;
@property (nonatomic, retain) IBOutlet UIWebView *fileWebView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *printButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *optionsButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *doneButton;
我的 .m 文件如下:
@implementation FileInteractionManager
@synthesize fileView, fileWebView, doneButton, optionsButton, printButton;
-(id)init {
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"FileInteractionView" owner:self options:nil];
NSLog(@"Load success!");
return self;
}
最后,我创建了一个名为“FileInteractionView.xib”的独立 xib 文件,将文件的所有者更改为我在上面创建的自定义类,然后连接 IBOutlets。
当我在我的类上调用该init
方法时,我可以在调试器中看到我的所有 IBOutlet 对象都已正确实例化。
我的问题是:
该
loadNibNamed:owner:options:
方法是加载我的独立 .xib 文件的正确方法吗?我不喜欢这个方法返回一个我没有用的数组(返回的顶级对象与我的变量匹配fileView
,但我已经通过 Interface Builder 链接了它们)。我的一般方法在解决我的问题时是否正确?我执行上述步骤是因为我想要一个
UIView
可以添加到现有 UIViewController 的简单对象,而不是呈现和关闭一个全新的 UIViewController。