Ios prepareForSegue给出线程1:EXC_断点
我有两个控制器,分别名为Ios prepareForSegue给出线程1:EXC_断点,ios,swift,Ios,Swift,我有两个控制器,分别名为RootViewController和CountrySelectionActivityViewController。我编写了一个prepareForSegue函数,用于将数据从第一个视图传递到第二个视图。我有一个导航控制器,其中嵌入了视图。这是我的代码: override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "ne
RootViewController
和CountrySelectionActivityViewController
。我编写了一个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。但是,如果未实现此函数,则不会传递数据。我的实现有什么问题?我想实现与您相同的目标,在执行序列时在控制器之间传递变量 我的解决方案是在每个控制器中创建两个变量,并通过自定义序列将它们关联起来 为了定义自定义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
}
如果您需要更多信息,请询问。我可以给您发送一些示例文件。哪一行有问题?是否在Interface Builder中明确设置了segue标识符?(另外:您以前是否在早期的beta版中设置了这个segue?我发现我有问题,直到我进入IB并在beta版7中重新键入我现有的segue标识符…)