创build并执行没有故事板的继续

我得到了一个没有故事板的应用程序,所有的UI创build都是在代码中完成的,我得到了一个splitView ,我可以在iPhone上使用这个应用程序,因为这个应用程序首先是为iPaddevise的,所以当你select列表中的一行时在主视图中,它在iPhone上不做任何事情,但在iPad上正常工作。

所以我的问题是我可以创build并执行允许在didSelectRowAtIndexPath方法显示详细视图的segue?

以下是我迄今为止所做的:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let segue = UIStoryboardSegue(identifier: "test", source: self, destination: detailViewController!) performSegueWithIdentifier("test", sender: self) } 

但是当运行和select一行应用程序崩溃告诉它需要一个处理程序,所以我加了这个:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let segue = UIStoryboardSegue(identifier: "test", source: self, destination: detailViewController!, performHandler: { () -> Void in let object = self.fetchedResultsController.objectAtIndexPath(indexPath) let controller = self.detailViewController! controller.detailItem = object controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() controller.navigationItem.leftItemsSupplementBackButton = true }) performSegueWithIdentifier("test", sender: self) } 

现在当select一行xcode说没有这样的标识符“testing”的segue。

我也尝试通过segue.perform()来调用它,并将performHandler内容添加到prepareForSegueMethod中:

  if segue.identifier == "test" { if let indexPath = self.tableView.indexPathForSelectedRow { let object = self.fetchedResultsController.objectAtIndexPath(indexPath) let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController controller.detailItem = object controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() controller.navigationItem.leftItemsSupplementBackButton = true } } 

它什么都不做,不会崩溃,只是突出显示我select的行,这一切

你们能帮我吗?

编辑:正如奥列格Gordiichuk说,这是不可能做我想做的没有故事板,所以感谢他的帮助:)

认为这是故事板互动的组成部分,它可以从类UIStoryboardSegue名字来理解。 以编程方式创buildsegues是个坏主意。 如果我不是错误故事板为你创造它们。

为了解决你的问题,尝试使用一些常见的方法,如简单地呈现ViewController

 let vc = self.storyboard?.instantiateViewControllerWithIdentifier("id") as! MyController self.presentViewController(vc, animated: true, completion: nil) 

正如我从我们的意见中所了解的。 你想创build导航tableview到细节视图使用segues没有故事板。 现在不可能没有故事板做到这一点。

为了将来的学习尝试调查这些信息 。

一种方法是为tableView使用didSelectRow方法

Swift 3.x

 // MARK: - Navigation & Pass Data func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("Selected Row \(indexPath.row)") let nextVC = YourNextViewController() nextVC.YourLabel.text = "Passed Text" nextVC.YourLabel.text = YourArray[indexPath.row] // Push to next view navigationController?.pushViewController(nextVC, animated: true) }