xCode在动态创建的ViewControllers之间传递数据

时间:2012-06-27 08:18:04

标签: objective-c xcode

我正在尝试设置一个基于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文件。有没有人知道如何在这个设置中传递数据?

2 个答案:

答案 0 :(得分:1)

如果您的问题是您需要为同一个视图控制器使用不同的xib,您可以在主iOS应用程序中提供所有这些xib,稍后通过在JSON中传递xib名称,您可以实例化该xib并分配给控制器。

如果您还需要调用您不知道名称的UIView对象,您也可以始终使用存储在JSON中的标记属性。 也许您也可以存储UIView类型,例如'UILabel','UITextView',ecc ...并为值调用适当的setter。

答案 1 :(得分:0)

想出来。如果我为每个视图提供JSON中的标记,可以轻松连接我需要的对象。