2012-06-27 45 views
0

我想设置一个项目,它基于JSON文件动态创建ViewControllers。我问一个问题关于如何创建此这里xcode在动态创建ViewControllers之间传递数据

xCode Dynamically create ViewControllers

所以我已经能够动态地创建ViewControllers和玩了更长时间后,我一直很容易设定,让当一天该应用程序加载时,它会生成在JSON中指定了多少个ViewController。我也可以轻松地在它们之间导航,并且每个屏幕都设置JSON的按钮,视图等。我这样做只是通过做

NSDictionary *MainJSON = [sJson JSONValue]; 
NSArray *theArray = [MainJSON valueForKey:@"viewControllers"]; 

然后循环通过数组创建一个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; 
     } 
    } 
} 

现在通常每个视图控制器将有一个类,所以在视图控制器我推我能做的属性,并以该类合成一个的NSString,所以传递数据时,下一个视图控制器,我会这样做。

vc.theString = textField.text 

但正如我动态生成这些ViewControllers,我可以为我只使用一个h和.m文件和每个视图控制器我生成使用相同的XIB文件没有做到这一点。有没有人有任何想法,我怎么可以在这个设置传递数据?

+1

呃...我不明白,你只有一个视图控制器的事实应该让事情变得更简单。你也可以在你的iOS应用中存储所有可能的xib和实例化视图控制器,也许在JSON中添加'xib name'字符串属性。请记住,UIView(标签等..)也可以用标签号召回,也可以将它存储到JSON中。 – Leonardo

+0

是的,在过去的半个小时里一直在玩它,并且意识到使用JSON可以很容易地实现这一点。基本上,我要么像你说的那样使用标签方法,要么我可以给每个viewController中的每个标签/文本字段一个ID,我可以用它来连接它们。我将所有创建的对象存储在差异数组中,因此可以循环查看哪些ID匹配并以此方式设置信息。猜猜我应该在问之前多玩一下。太早:P – AdamM

+0

如果您将评论留在答案中,我可以将其标记为已接受! – AdamM

回答

1

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

如果您还需要回想起您不知道名称的UIView对象,那么您始终可以使用JSON中存储的标记属性。 也许你还可以存储UIView类型,比如'UILabel','UITextView',ecc ...并且调用合适的setter来获得值。

0

想通了。如果我给每个视图添加一个来自JSON的标记,可以轻松地连接我需要的对象。