【问题标题】:2 UIViewController 1 View2 UIViewController 1 视图
【发布时间】:2011-06-15 14:54:26
【问题描述】:

这是一个关于 iPhone 目标 C 设计的问题。如何让 2 个 UIViewController 管理同一个视图?每个 UIViewController 将在不同的时间创建,但它们的视图本质上是相同的。

为了帮助解释,这里有一个例子:

假设我有一个 ViewController,它从服务器同步任务列表,允许用户编辑/删除这些任务,并在视图上显示其他信息(如状态消息)等。在单独的时间,我想要使用相同的视图显示这些任务的“只读”列表(因为视图已经创建,tableView 已创建,状态消息文本框在那里等),但基于不同的东西,我希望这个视图采取不同的行动并更新不同的状态消息。

所以在这个例子中,我想重用视图,但根据用户所在的位置使用 2 个不同的控制器。如果他/她处于编辑模式,则显示操纵 VIEW 1 的 UIViewController 1。如果他/她处于读取模式,则显示操纵 VIEW 1 的 UIViewController 2。

我想知道最好的设计方法是 1. 可能还是 2. 我应该将 VIEW 1 复制为 VIEW 2 并让 UIViewController 2 管理 VIEW 2,即使它们完全相同。

提前感谢您的帮助。

【问题讨论】:

    标签: objective-c view controllers


    【解决方案1】:

    创建一个基础 UIViewController 类,您的每个人都从该类继承。将所有通用接口元素声明(普通 ivars 或 IBOutlets)放在基类中。如果您使用 InterfaceBuilder,则将文件所有者设为基类。

    【讨论】:

    • 那么当我创建我的“读取”视图控制器时,我会这样做吗? ParentViewController *parent = [ChildReadViewController init];
    • 所以如果我有一个基类 BaseViewController,然后是 ReadViewController : BaseViewController,你要么做 ReadViewController *readController = [[ReadViewController alloc] init];这将为您提供基础和您的读取后代中的所有内容,或者为 Interface Builder... ReadViewController *readController = [[ReadViewController alloc] initWithNibName:@"mynib.xib" owner:nil];
    • 那么我会将事件绑定到界面构建器中的哪个 ViewController?
    • 到基本视图控制器。然后,如果您想覆盖后代中的那些,那么您可以。
    • 那么当我实例化子 ViewController 时,即使事件绑定在基类中,它们也会绑定在子类中?意思是,如果我将它们绑在底座上,当按下按钮时,会在孩子中调用 Button1Press IBAction?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多