我可以从Interface Builder传递'参数',这样我的ViewController类就知道如何处理不同了吗?

问题描述:

在我的项目中,我有一个视图(在xib中定义),它是一个可重用的组件,并将在许多其他视图中放置,我的视图控制器类设计为处理此视图的不同模式。我可以从Interface Builder传递'参数',这样我的ViewController类就知道如何处理不同了吗?

我的应用程序有3个选项卡基本上使用相同的视图,通过初始化不同的参数,他们工作得很好。我从Interface Builder中加载这个视图(通过指定NIB名称和类名称),但我将不得不传递不同的参数,以便我的视图控制器知道它是哪种模式。

我想知道是否可以从界面生成器定义一些'参数',所以我的视图控制器类可以简单地查找和确定自己。所以我不需要编写任何额外的代码来在很多不同的地方重复使用这个笔尖呢?

我结束了使用“标题”传递一个JSON字符串,它为我工作得很好,我不知道是否有更好的方式来做到这一点。

我会研究在视图控制器中创建自己的自定义init方法,并使用它们来初始化视图控制器。

myViewController = [[[myUIViewController alloc] init] initWithParamOne:paramOne andParamTwo:paramTwo]; 

- (id) initWithParamOne:(NSString *)paramOne andParamTwo:(NSString *)paramTwo { 
    self = [super initWithNibName:@"myNib" bundle:nil]; 
    if (self) { 
     // code here 
    } 
} 
+0

我不喜欢这个的原因是,我需要那些额外的代码只设置一个参数传递给我的viewcontroller。如果我可以通过Interfacebuilder传递它们,我不需要编写一行代码,它将使项目变得更简单和易于维护,因为我的视图控制器已经能够处理所有不同的场景。我没有考虑的另一个选项是从我的视图控制器创建一堆继承类,并在IB中设置... –

然后,您的其他选项是在视图控制器视图上使用标签参数 - 如果您尚未将其用于其他选项。

您的viewController然后会读取它的主视图标记并相应地改变它的行为。

myViewControllersView.tag = i; 
+0

谢谢!我需要传递一些更复杂的价值,而不仅仅是一个数字。我最终使用“标题”来传递这些参数。 –