iphone - 如何将通用(NSObject) Controller 与 UIViewController 的 subview 一起使用?

标签 iphone cocoa-touch uiviewcontroller subview

我有一个 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 帖子都还没有完全切中要害。

最佳答案

好吧,我想我已经明白了:

  1. 扩展 NSObject 来创建您的 CustomController
  2. 在 CustomController.h 中定义您的导出和 Action ,包括对 nib 中 UIView 的引用
  3. 将 Nib 的文件所有者设置为 CustomController
  4. 照常连接所有 socket 和操作,包括 UIView socket
  5. 在 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/

相关文章:

iphone - 如何确定 UITableView 何时完成加载所有行?

objective-c - 在快速枚举中跟踪索引

ios - 关闭从 SideMenu 打开的 ViewController

swift - 删除 UIView 后重置其他组件的约束

iphone - 如何在选择单元格后立即显示 UIAlert 并在显示新的 UIView 后结束它?

ios - 查询的 iTunes 搜索 API 页码

iPhone:UIImageView 淡入 - 如何?

iphone - 如何暂时禁用 iPhone 应用程序安排的所有本地通知?

javascript - 如何将对象从 Objective C 传递到 javascript

iphone - 正则表达式检测 $<name> 时出现问题