2011-12-30 84 views
0

我正在尝试复制数组,我必须以编程方式创建新视图。我实际上已经找到了如何用正常的导航控制器语法来做到这一点我的问题是我使用新的故事板,我不知道做同样的事情的语法。这里是我的代码有..以编程方式将数组复制到故事板中的新视图

CustomerListViewController *second = [[CustomerListViewController alloc] initWithNibName:@"CustomerListViewController" bundle: nil]; 
[second setValue:customerList.list]; 
// [self.navigationController pushViewController:second animated:YES]; 
[self performSegueWithIdentifier:@"LoginSegue" sender:self]; 

,你可以看到,我编程方式创建第二个视图控制器和存储本地阵列customerList.List所创建的视图控制器的数组变量。下一步是打开新创建的视图。注释掉的行是在导航控制器下打开视图的语法。下面的行是故事板的方式,但减去指定我创建的视图。我需要知道故事板的语法与导航控制器执行相同的操作。

感谢

回答

3

它没有任何意义,如果你正在使用塞格斯在这里创建自己的CustomerListViewController实例。 segue本身将从故事板创建视图控制器,并且您在此处创建的实例将不会执行任何操作。

相反,只需在这里拨打performSegueWithIdentifier:sender:即可。然后实现prepareForSegue:sender:方法是这样的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"LoginSegue"]) { 
     CustomerListViewController *destinationController = (CustomerListViewController *)segue.destinationViewController; 
     [destinationController setValue:customerList.list]; 
    } 
} 
+0

对不起,我应该提到。我需要以编程方式调用SEGUE在特定的时间,因为新的视图按钮按下叫,但我要打开一个连接,并做一些处理和计算。如果我不以编程方式调用它,那么视图将在任何计算完成之前打开,并且在创建视图时我的数组为空。 *编辑*没关系,我明白你在说什么。我会试试这个。 – 2011-12-30 15:03:23

+0

没问题。正如我所说的,当你需要启动segue时,只需调用'performSegueWithIdentifier:sender:'。 – 2011-12-30 15:05:25

+0

嗯,我试过了,首先,您发布的代码会导致customerList.list上的错误,表示customerList未定义(它在第二个视图控制器中)。我改变它只是列表(在第二个视图控制器中的数组的名称),但它的空和没有传递。有了这种风格,我想我没有看到第一个视图控制器的数组传递到第二个... – 2011-12-30 15:12:41

相关问题