我有一个 UIViewController,它根据用户交互在不同时间加载多个 subview 。我最初在代码中构建了所有这些 subview ,没有 nib 文件。现在我正在转向带有自定义 UIView 子类的 nib 文件。
其中一些 subview 显示静态数据,我使用 loadNibNamed:owner:options: 将它们加载到 View Controller 中。其他包含我需要访问的控件。
我(有点)理解苹果说每个屏幕内容使用一个 View Controller 的原因,使用通用 Controller 对象(NSObjects)来管理屏幕的各个部分。
所以我需要一个 View Controller 、一个通用 Controller 、一个 View 类和一个 Nib 。我如何将这些放在一起?
我的工作假设和后续问题:
- 我会将 View 类与 “类(Class)身份”掉落中的 Nib IB 下降。
- View Controller 将协调 整体画面交互。什么时候 必要时,它将创建一个实例 通用 Controller 。
- 通用 Controller 是否加载 Nib ?怎么办?
- 我是否定义 channel 和行动 在那个 View 类中,或者它们应该是 在通用 Controller 中?
- 如何在 View Controller 和通用 Controller ?
如果有人可以向我指出一些以这种方式使用 Controller 的示例代码,这将有助于我理解。我读过的书籍或 stackoverflow 帖子都还没有完全切中要害。
最佳答案
好吧,我想我已经明白了:
- 扩展 NSObject 来创建您的 CustomController
- 在 CustomController.h 中定义您的导出和 Action ,包括对 nib 中 UIView 的引用
- 将 Nib 的文件所有者设置为 CustomController
- 照常连接所有 socket 和操作,包括 UIView socket
- 在 CustomController.m init 中,加载 Nib
- (id)init {
self = [super init];
if (self != nil)
[self loadNib];
return self;
}
- (BOOL)loadNib {
NSArray *topLevelObjs = nil;
topLevelObjs = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil];
if (topLevelObjs == nil) {
NSLog(@"Error! Could not load nib file.\n");
return NO;
}
return YES;
}
基于 NSObject 的新 Controller 的工作方式与 View Controller 非常相似。
关于iphone - 如何将通用(NSObject) Controller 与 UIViewController 的 subview 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399586/