创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) }