我有一个选项卡栏作为根视图控制器,每个选项卡都是一个导航控制器,以详细视图控制器为根。
我需要几个具有几乎相同逻辑但属性值不同的选项卡。我认为最好的方法是使用相同的 vc 并在 init 方法中设置属性。就像是:
[[MyViewController alloc] initWithStyle:MyCustomStyle]
但我看不到在哪里调用这个方法。
我有一个选项卡栏作为根视图控制器,每个选项卡都是一个导航控制器,以详细视图控制器为根。
我需要几个具有几乎相同逻辑但属性值不同的选项卡。我认为最好的方法是使用相同的 vc 并在 init 方法中设置属性。就像是:
[[MyViewController alloc] initWithStyle:MyCustomStyle]
但我看不到在哪里调用这个方法。
我假设您正在使用 nib 或情节提要创建 UI。如果是这样,是的,UIViewController
不支持对 s 或子类进行自定义初始化——为您调用指定的初始化程序。
可能的解决方法:
以编程方式创建您的UITabBarController
:通过这种方式,您可以以任何您喜欢的方式实例化您的 VC
在MyViewController
实例化时找出它实际上是哪个实例并相应地设置自己——例如,通过查看其包含的视图控制器并使用它(例如找出它是什么选项卡索引)
第一个选项是更好的选项,因为它更干净,并且不需要MyViewController
知道它在 aUITabBarController
或类似中的潜在位置(这非常hacky)。
如果您依赖 NIB 来实例化和初始化您的导航控制器,您可以使用多种技巧来告诉每个控制器它是什么。
最简单的方法是在NIB中tse Tag,并在initWithNibName:bundle:、initWithCoder:或 viewDidLoad中处理不同的值