2014-09-05 77 views
0

我有两个控制器名为RootViewControllerCountrySelectionActivityViewController。我写了一个prepareForSegue函数来将数据从第一个视图传递到第二个视图。我在该视图嵌入导航控制器所以,这里是我的代码:prepareForSegue给线程1:EXC_BREAKPOINT

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "next") { 
     let mynavigationController = segue.destinationViewController as UINavigationController 
     let vc = mynavigationController.topViewController as CountrySelectionActivityViewController 
     vc.countries = countries 
    } 
} 

如果我注释掉的代码,我的应用程序运行,并移动到下一个视图 - 控制。但是,如果这个功能没有实现,数据不会被传递。我的实施有什么问题?

+0

哪一行是问题?在界面生成器中确定设置了segue标识符? (另外:你以前是否在早期的测试版中设置了这个segue?我发现我有问题,直到我进入IB并重新键入我在beta 7中的现有segue标识符...) – 2014-09-05 16:06:04

回答

0

我想实现与您一样的目标,在执行segue时在控制器之间传递变量。

我的解决方案是在每个控制器中创建两个变量,并通过自定义的segue关联它们。

为了定义自定义的segue,一个新的类被加载:CustomPushSegue.m。该文件具有执行-(void)perfom。该类型为UIStoryboardSegue,并且具有类型为UIViewController的原始和目标变量。

然后想法是投目的地和来源为自定义控制器的每一个的viewController和传递变量:

#import "OriginController.h" 
#import "DestinationController.h" 

-(void) perform { 
    UIViewController *destinationController = self.setinationViewController; 
    UIViewController *originController = self.sourceViewController; 

    if ([[self identifier] isEqualToString : @"Segue"]){ 
     (DestinationController*) destinationController.var1 = (OriginController*) originController.var1; 
    } 

    //Stuff related to the performance of the Segue goes here 
} 

如果您需要了解更多信息,请询问。我可以给你发送一些示例文件。

相关问题