0

我有一个选项卡栏作为根视图控制器,每个选项卡都是一个导航控制器,以详细视图控制器为根。

我需要几个具有几乎相同逻辑但属性值不同的选项卡。我认为最好的方法是使用相同的 vc 并在 init 方法中设置属性。就像是:

[[MyViewController alloc] initWithStyle:MyCustomStyle]

但我看不到在哪里调用这个方法。

4

2 回答 2

1

我假设您正在使用 nib 或情节提要创建 UI。如果是这样,是的,UIViewController不支持对 s 或子类进行自定义初始化——为您调用指定的初始化程序。

可能的解决方法:

  • 以编程方式创建您的UITabBarController:通过这种方式,您可以以任何您喜欢的方式实例化您的 VC

  • MyViewController实例化时找出它实际上是哪个实例并相应地设置自己——例如,通过查看其包含的视图控制器并使用它(例如找出它是什么选项卡索引)

第一个选项是更好的选项,因为它更干净,并且不需要MyViewController知道它在 aUITabBarController或类似中的潜在位置(这非常hacky)。

于 2012-11-02T17:14:50.473 回答
0

如果您依赖 NIB 来实例化和初始化您的导航控制器,您可以使用多种技巧来告诉每个控制器它是什么。

最简单的方法是在NIB中tse Tag,并在initWithNibName:bundle:initWithCoder:viewDidLoad中处理不同的值

于 2012-11-02T17:16:49.110 回答