【问题标题】:View Controller With two different XIB's..Tricky使用两个不同的 XIB 的视图控制器..棘手
【发布时间】:2014-03-06 22:23:31
【问题描述】:

我有一个棘手的问题..请帮忙..

我有一个名为“DemoViewController”的 ViewController 两个不同的 Xib(Demo1Controller.xib 和 Demo2Controller.xib)链接到 DemoViewController,将根据 Condition 加载 Xib..

我在 AppDelegate 中实现了导航控制器,目前我正在使用 XIB Demo1Controller 推送这个视图控制器(DemoViewController),当用户点击 Demo1Controller 中的按钮时,我需要加载相同的视图控制器,即带有 Xib Demo2Controller 的 DemoViewcontroller..

这可能吗?或者我是否需要为两个 Xib 维护不同的类

如果您有任何问题,请告诉我...

【问题讨论】:

  • 是的,你可以...干杯!!!
  • 怎么样?你能帮忙吗..
  • 您想在两个不同的按钮操作中加载DemoViewController 的两个不同视图吗?

标签: ios objective-c uiviewcontroller uinavigationcontroller


【解决方案1】:

由于 ViewController 只是一个对象,就像任何其他对象一样,您可以根据需要将任意数量的对象堆叠在一起。根据需要创建该对象的任意数量的实例。

当你实例化它们时,你可以这样做:

UIViewController *viewController = [[DemoViewController alloc] initWithNibName:@"Demo1Controller" bundle:nil];

UIViewController *viewController = [[DemoViewController alloc] initWithNibName:@"Demo2Controller" bundle:nil];

只要在两个 .xib 上正确设置了 IBOutlets 和委托,并且它们使用 IB 中的相同自定义类进行设置。 (检查器面板左起第三个图标,位于顶部。)如果您未能正确设置它们,它只会在构建和运行时崩溃。

您还可以查看我前段时间用不同方法回答的类似问题。 Another approach

【讨论】:

    【解决方案2】:

    试试这个

    - (id)init
        {
         if (YES)
                    self = [super initWithNibName:@"VC1" bundle:nil];
                else
                    self = [super initWithNibName:@"VC2" bundle:nil];
    
                return self;
        }
    

    【讨论】:

      【解决方案3】:

      我不确定这是否对您有帮助,或者是否适合您的情况,但我可能会建议一种稍微不同的方法(显然,在不太了解您的具体情况的情况下)。

      我可能会建议,与其让一个类有两个不同的 nib,不如让一个类具有这两个“屏幕”共享的所有常见行为,然后是这个公共父类的两个具体子类每个“屏幕”。我假设两者之间存在细微的行为差异。

      然后,您可以像往常一样使用特定的 nib 名称创建具体子类的实例:

      SubclassOneViewController *viewController = [[SubclassOneViewController alloc] initWithNibName:@"SubclassOneViewController" bundle:nil];
      

      【讨论】:

      • 感谢您的建议,但这是开发的项目,我需要对其进行一些小修改。希望您能理解..
      • 没问题。这是更好的解决方案,如果你能做到的话。
      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2015-01-03
      • 2011-05-09
      相关资源
      最近更新 更多