1

比方说,我有三个 UIViewController

  • 用户窗体视图控制器
  • 新用户窗体视图控制器:用户窗体视图控制器
  • 更新用户窗体视图控制器:用户窗体视图控制器

因此,NewUserFormViewController 和 UpdateUserFormViewController 视图控制器从其父级继承以共享基本功能。不同的是他们的方法,创建和更新。

这些观点也有很多共同点,几乎无所不包。NewUserFormViewController 和 UpdateUserFormViewController 之间的不同视图组件是执行保存任务(创建或更新)的按钮

是否可以让两个 UIViewController 共享一个 XIB 文件?比方说, UserFormViewController.xib 然后我做

[[NewUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];
[[UpdateUserFormViewController alloc] initWithNibName@"UserFormViewController" bundle:nil];

另一个但重要的问题是,当我使用 Interface Builder 编辑 xib 文件时,它在谈论什么所有者的参考网点和 IBActions,NewUserFormViewController 还是 UpdateUserFormViewController? (当我们右键单击占位符 -> 文件所有者时显示 IBActions 和 Outlets)

如果是这样,我将只使用一个 XIB 文件并以编程方式添加其他特定的视图组件(最好只有一个 XIB 文件,这样我可以在一个地方进行一些更改,但对两者都有效)

4

2 回答 2

3

“文件所有者”只是一个约定,因此 XCode 可以在其检查器中向您显示正确IBOutlet的 s 和s。IBAction如果您创建一个泛型(用 OO 术语:抽象)UserFormViewController(.h、.m、.xib),请将其连接到 IB;然后将它分成两个子类NewUserFormViewControllerUpdateUserFormViewController它们将从父类继承它们的出口和动作,没有任何问题。

于 2012-05-30T05:58:05.403 回答
1

@Armaan 我通过简单地调用子类的 alloc init 方法遇到了同样的问题。我通过使用 initWithNibName: 解决了这个问题,并提供了父类的 xib 文件名。

于 2013-02-05T09:56:18.673 回答