【问题标题】:One xib, many ViewControllers - is it a proper way?一个 xib,许多 ViewControllers - 这是正确的方法吗?
【发布时间】:2013-12-21 16:50:46
【问题描述】:

我是 iOS 新手。我目前正在开发一个 iOS 应用程序,我有一个小问题要问你。我有几个 ViewControllers 哪些 Views 是相同的 - 一个带有一些数据的 tableView。只有逻辑不同——如果你选择一行,就会发生不同的事情,而且这些行看起来也有点不同,但这些差异是在 ViewControllers 代码中产生的。我的问题是,为这些 ViewController 创建 xib 的正确方法是什么?我应该为每个 ViewController 创建新的 xib 还是只为所有 ViewController 创建一个?如果有的话,xib 的 FilesOwner 怎么办?我在xCode中设置了它,所以我应该改变它还是什么?只有一个视图好吗? 谢谢!

【问题讨论】:

    标签: ios objective-c uiviewcontroller xib nib


    【解决方案1】:

    如果所有视图都是UITableViews,您只需要一个xib 文件(让我们将其命名为GenericTableView.xib),添加您的UITableView,将其与文件所有者连接起来,它只是一个UITableViewController。之后创建UITableViewController 的单独子类并在其中实现您的特定行为。

    在您的代码中,您可以轻松地启动任何 UITableViewController 子类

    [[MyViewController alloc] initWithNibName:@"GenericTableView" bundle:[NSBundle mainBundle]];
    

    【讨论】:

      【解决方案2】:

      前面的答案是对的,但我觉得实例化 ViewControllers 或在代码中使用 xib 并不方便。我让 segues 完成所有工作。

      我会有一个基类,比如说 GenericTableViewController 并在那里定义常见行为(如 IBAction 或与 UI 的交互),视图也是继承的,因此所有子类(视图控制器)共享它。

      【讨论】:

      • 如果项目不使用情节提要怎么办?然后你必须自己加载 xibs(或者完全在代码中创建视图控制器)。
      • 您可以随时添加故事板,并调整您的项目。不管你用的是XIB还是storyboards,都得写ViewControllers。
      【解决方案3】:

      Swift 4.2

      MyViewController.init(nibName: "MyGenericVC", bundle: Bundle.main)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多