Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从TableViewController切换到另一个TableViewController_Objective C_Ios_Uistoryboardsegue - Fatal编程技术网

Objective c 从TableViewController切换到另一个TableViewController

Objective c 从TableViewController切换到另一个TableViewController,objective-c,ios,uistoryboardsegue,Objective C,Ios,Uistoryboardsegue,使用故事板,我有一个带有行列表的表视图控制器。当选择一行时,我希望将与该行关联的数据传递给另一个表视图控制器,该控制器嵌入在UINavigationController中 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"EditJob"]) { NewJobsTableViewControl

使用故事板,我有一个带有行列表的表视图控制器。当选择一行时,我希望将与该行关联的数据传递给另一个表视图控制器,该控制器嵌入在UINavigationController中

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"EditJob"])
    {
        NewJobsTableViewController *newJobsTableViewController = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        Jobs *job = [self.fetchedResultsController objectAtIndexPath:indexPath];
        newJobsTableViewController.jobDetails = job;

    }
}
在prepareForSegue方法的最后一行,我得到了以下错误:
[UINavigationController setJobDetails:]:发送到实例0x83a7780的选择器无法识别 2012-11-11 08:50:25.335我的交易[40612:c07]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UINavigationController setJobDetails:::]:未识别的选择器发送到实例0x83a7780'

jobDetails在newJobsTableViewController中声明为:

@interface NewJobsTableViewController : UITableViewController <UITextFieldDelegate,      NSFetchedResultsControllerDelegate> {
    Jobs *_jobDetails;
}

@property (strong, nonatomic) Jobs *jobDetails;
@interface NewJobsTableViewController:UITableViewController{
职位*\职位详情;
}
@属性(强、非原子)作业*作业详细信息;

我不确定它为什么会导致这个错误

我觉得你的故事板设置错误。第二个tableViewController不应该嵌入到它自己的导航控制器中。只需设置一个从第一个tableViewController到第二个tableViewController的推送序列——第二个将自动嵌入到与第一个相同的导航控制器中

我认为,出现错误的原因是,目标视图控制器实际上是嵌入第二个视图控制器的导航控制器。这一行并没有达到您期望的效果:

 NewJobsTableViewController *newJobsTableViewController = segue.destinationViewController;

即使您将destinationViewController的返回值设置为您的类,它也会返回实际返回的值--我打赌如果您记录newJobsTableViewController的类,它实际上将作为UINavigationController返回。

您是否尝试记录您的控制器?那么您将如何检索NewJobsTableViewController?@Stas,只是不要将第二个表视图控制器嵌入其自己的导航控制器中,那么该行将检索NewJobsTableViewController。谢谢。我试图重新使用NewJobsTableViewController来添加和编辑数据。因此,我有一个初始的segue来添加新数据,但随后我也添加了另一个segue来编辑数据,这就是它出错的地方。我只是简单地将NewJobsTableViewController场景复制/粘贴到故事板上,然后将“编辑”序列重定向到副本,但两者都引用相同的类文件。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"EditJob"])
    {
        NewJobsTableViewController *newJobsTableViewController = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        Jobs *job = [self.fetchedResultsController objectAtIndexPath:indexPath];
        newJobsTableViewController.jobDetails = job;

    }
}