prepareForSegue给线程1:EXC_BREAKPOINT
问题描述:
我有两个控制器名为RootViewController
和CountrySelectionActivityViewController
。我写了一个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
}
}
如果我注释掉的代码,我的应用程序运行,并移动到下一个视图 - 控制。但是,如果这个功能没有实现,数据不会被传递。我的实施有什么问题?
答
我想实现与您一样的目标,在执行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
}
如果您需要了解更多信息,请询问。我可以给你发送一些示例文件。
哪一行是问题?在界面生成器中确定设置了segue标识符? (另外:你以前是否在早期的测试版中设置了这个segue?我发现我有问题,直到我进入IB并重新键入我在beta 7中的现有segue标识符...) – 2014-09-05 16:06:04