prepareForSegue给出线程1:EXC_BREAKPOINT

时间:2014-09-05 09:03:31

标签: ios swift

我有两个名为RootViewControllerCountrySelectionActivityViewController的控制器。我编写了一个prepareForSegue函数来将数据从第一个视图传递到第二个视图。我有一个导航控制器,其中嵌入了视图。所以,这是我的代码:

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
    }
}

如果我注释掉这段代码,我的应用程序会运行并移动到下一个viewcontroller。但是,如果未实现此功能,则不会传递数据。我的实施有什么问题?

1 个答案:

答案 0 :(得分: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
}

如果您需要更多信息,请询问。我可以寄给你一些样本文件。

相关问题