在视图控制器之间传递变量 - 线程1:信号SIGABRT

时间:2014-04-17 03:20:59

标签: ios variables segue sigabrt

我正在尝试将变量(tutorID)传递给另一个视图控制器(TimetableTableViewController),但是当代码运行时,应用程序崩溃并发出错误消息:Thread 1: signal SIGABRT

我在TimetableTableViewController.h内部(我将变量传递给的视图):

@property (nonatomic, strong) NSString *currentTutorID;

这是在视图控制器中的prepareForSegue方法中我从以下位置发送变量:

NSString *tutorID = @"1";

TimetableTableViewController * timetableTableViewController = [segue destinationViewController];
timetableTableViewController.currentTutorID = tutorID;

如果有人可以帮我修复此错误或给我另一种方式,谢谢。

修改

segue正在导致NavigationViewController,这就是为什么它会崩溃。有谁知道如何将变量传递给TimetableTableViewController而不是NavagationViewController

2 个答案:

答案 0 :(得分:0)

奇怪你得到了SIGABRT,应该说你的控制器没有响应选择器tutorID

使用[segue.destinationViewController topViewController]从您想要呈现的导航控制器获取根控制器。

答案 1 :(得分:0)

所以问题是你的segue是在NavigationViewController中进行的,而TimetableTableViewController是它的根视图控制器。

在这种情况下,[segue destinationViewController]将返回NavigationViewController而不是TimetableTableViewController。

你可以试试这个。

NavigationViewController * nav = [segue destinationViewController];
TimetableTableViewController * timetableTableViewController = nav[0];
timetableTableViewController.currentTutorID = tutorID;

试试这个并告诉我你得到了什么。