我正在尝试设置一个基于JSON文件动态创建ViewControllers的项目。前几天我问了一个关于如何创建这个问题的问题
xCode Dynamically create ViewControllers
所以我已经能够动态地创建ViewControllers并且在更多地使用它之后,我已经非常容易地设置它,所以当应用程序加载时,它会生成如何在JSON中指定多个ViewControllers。我也可以在它们之间轻松导航,并且每个屏幕都可以设置JSON的按钮,视图等。我只是通过做
来做到这一点NSDictionary *MainJSON = [sJson JSONValue];
NSArray *theArray = [MainJSON valueForKey:@"viewControllers"];
然后遍历theArray创建一个ViewController实例。
我的问题是,我希望能够在ViewControllers之间传递数据。所以说比如我在JSON中设置它,所以第一个ViewController有一个文本字段。用户将输入一些数据,我希望能够进行设置,以便当他们导航到下一个屏幕时,该数据被传送到下一个屏幕。我目前正在切换这样的屏幕
-(void)nextScreen
{
for(int i = 0; i < [vcArray count]; i++)
{
int iID = i+1;
if([self.navigationController.viewControllers count] == iID)
{
ViewController *theVC = [vcArray objectAtIndex:i];
[self.navigationController pushViewController:theVC animated:YES];
break;
}
}
}
现在通常每个ViewController都有一个类,所以在ViewController中我推动我可以做属性并在该类中合成一个NSString,所以在将数据传递给下一个ViewController时,我会这样做。
vc.theString = textField.text
但是当我动态生成这些ViewControllers时,我不能这样做,因为我只使用一个.h和.m文件,而我生成的每个ViewController都使用相同的XIB文件。有没有人知道如何在这个设置中传递数据?
答案 0 :(得分:1)
如果您的问题是您需要为同一个视图控制器使用不同的xib,您可以在主iOS应用程序中提供所有这些xib,稍后通过在JSON中传递xib名称,您可以实例化该xib并分配给控制器。
如果您还需要调用您不知道名称的UIView对象,您也可以始终使用存储在JSON中的标记属性。 也许您也可以存储UIView类型,例如'UILabel','UITextView',ecc ...并为值调用适当的setter。
答案 1 :(得分:0)
想出来。如果我为每个视图提供JSON中的标记,可以轻松连接我需要的对象。