【问题标题】:Reuse nib's across multiple UIViewControllers跨多个 UIViewController 重用 nib
【发布时间】:2011-02-09 08:31:16
【问题描述】:

我在一个 nib 文件中创建了一些自定义 UITableViewCells,并希望在多个 UIViewControllers 中使用它。

谁能告诉我这样做的最佳做法?我在加载 nib 方面的有限知识似乎表明您必须在 Interface Builder 中指定一个所有者类。

谢谢。

【问题讨论】:

    标签: iphone uitableview uiviewcontroller nib cocoa-design-patterns


    【解决方案1】:

    去做吧;没有真正的障碍。至于 File's Owner 类,只要你在 nib 中绑定的键存在于你想在其中使用 nib 的任何对象中,就可以了。

    【讨论】:

    • 我想你也可以为 File's Owner 指定一个@interface,如果你想做得更干净一点。
    • 这是克里斯托弗的好建议。谢谢大家。
    【解决方案2】:

    您可以使用initWithNibName:bundle: 以编程方式实例化UIViewController 类,并为多个控制器指定相同的笔尖。例如,我现在正在构建一个游戏,它有一个 GameController 类,它定义了其中的基本游戏逻辑。 GameController 有一个关联的 GameController.xib 文件,该文件在自定义初始化程序中加载:

    - (id)initWithOptions:(NSDictionary *)gameOptions
    {    
        if (self = [super initWithNibName:@"GameController" bundle:nil])
        {
            // code here
        }
        return self;
    }
    

    我有几种不同的游戏类型:点对点、本地和在线。游戏逻辑相同,但通信实现略有不同,所以每一个都是GameController的子类。根据应用程序的使用方式,它会实例化不同的控制器:

    local = [[LocalGameController alloc] initWithOptions:options];
    online = [[OnlineGameController alloc] initWithOptions:options];
    

    您可以看到,由于它们都扩展了GameController,因此它们都将以GameController.xib 作为其视图。在这种情况下,GameController 将是您的单一文件所有者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多