objective-c - 从 Table ViewController 到另一个 UITableViewController

标签 objective-c ios uistoryboardsegue

使用 Storyboard ,我有一个带有行列表的 TableView Controller 。当选择一行时,我想将与该行关联的数据传递到嵌入 UINavigationController 中的另一个 TableView 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:]:无法识别的选择器发送到实例 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;

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

最佳答案

在我看来,你的 Storyboard设置错误。第二个 tableViewController 不应该嵌入到它自己的导航 Controller 中。只需设置从第一个 tableViewController 到第二个 tableViewController 的推送序列即可 - 第二个 tableViewController 将自动嵌入与第一个 tableViewController 相同的导航 Controller 中。

我认为错误的原因是因为目标 View Controller 实际上是您嵌入第二个 View Controller 的导航 Controller 。这一行没有执行您期望的操作:

 NewJobsTableViewController *newJobsTableViewController = segue.destinationViewController;

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

关于objective-c - 从 Table ViewController 到另一个 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326560/

相关文章:

objective-c - 在 xcode 中创建和使用汇编程序库

ios - 在 (BOOL)webView : How to open a URL clicked in UIWebView that opens a Modal UIWebView 内

ios - 检测应用是否是全新安装或更新的

objective-c - 标签不会出现在 Mac Retina 设备中

ios - 二进制拒绝 - Interface.plist 上的接口(interface)错误 - Watch App

ios - 在应用程序运行时在 AppDelegate 中运行 didFinshLaunchingWithOptions?

ios - 什么时候为嵌入式 viewController 调用 prepareForSegue?

iOS中文字符串显示?在按钮标签中时

ios - PaintCode 中的 UIButton (Swift)