0

我正在尝试建立一个基于 JSON 文件动态创建 ViewControllers 的项目。前几天我问了一个关于如何在这里创建这个的问题

xCode 动态创建 ViewControllers

所以我已经能够动态地创建 ViewControllers,并且在玩了更多之后,我已经很容易设置它,所以当应用程序加载时,它会生成多少个 ViewControllers 在 JSON 中指定。我还可以轻松地在它们之间导航,并且还可以从 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 文件。有没有人知道我如何在这个设置中传递数据?

4

2 回答 2

1

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

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

于 2012-06-27T11:58:37.153 回答
0

弄清楚了。如果我给每个视图一个来自 JSON 的标签,就可以轻松地连接我需要的对象。

于 2012-06-27T11:25:18.263 回答