0

使用情节提要,我有一个带有行列表的表格视图控制器。选择一行时,我想将与该行关联的数据传递到另一个表视图控制器,该表嵌入了Uinavigation Controller中。

- (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:]: unrecognized selector sent to instance 0x83a7780 2012-11-11 08:50:25.335 My Trades[40612:c07] *由于未捕获而终止应用程序异常“NSInvalidArgumentException”,原因:“-[UINavigationController setJobDetails:]:无法识别的选择器发送到实例 0x83a7780”

jobDetails 在 newJobsTableViewController 中声明为:

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

@property (strong, nonatomic) Jobs *jobDetails;

我不确定为什么会导致此错误。

4

1 回答 1

1

在我看来,您的情节提要设置错误。第二个 tableViewController 不应该嵌入到它自己的导航控制器中。只需设置从您的第一个 tableViewController 到第二个的 push segue - 第二个将自动嵌入与第一个相同的导航控制器中。

我认为,错误的原因是目标视图控制器实际上是您嵌入第二个视图控制器的导航控制器。这条线并没有按照您的预期做:

 NewJobsTableViewController *newJobsTableViewController = segue.destinationViewController;

即使您将destinationViewController 的返回值设置为您的类,它也会返回它实际上是什么——我敢打赌,如果您记录newJobsTableViewController 的类,它实际上会以UINavigationController 的形式返回。

于 2012-11-10T22:42:16.617 回答