Edd*_*dyW 9 iphone xcode ios swift
我有一个没有故事板的应用程序,所有UI创建都是用代码制作的,我得到了一个splitView我可以在iPhone上使用的应用程序,因为该应用程序最初是专为iPad设计的,所以当你在列表中选择一行时Master视图它在iPhone上没有任何作用,但在iPad上工作正常.
所以我的问题是我可以创建并执行允许在didSelectRowAtIndexPath方法上显示详细信息视图的segue 吗?
这是我到目前为止所做的:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let segue = UIStoryboardSegue(identifier: "test", source: self, destination: detailViewController!)
performSegueWithIdentifier("test", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
但是当运行并选择一行时,应用程序崩溃告诉它需要一个执行处理程序,所以我添加了这个:
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)
}
Run Code Online (Sandbox Code Playgroud)
现在当选择一行时,xcode表示没有带有这种标识符"test"的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
}
}
Run Code Online (Sandbox Code Playgroud)
并且它什么都不做,不会崩溃,只是突出显示我选择的行,这就是全部
你们能帮助我吗?
编辑:正如Oleg Gordiichuk所说,没有故事板,我不可能做我想做的事,所以感谢他的帮助:)
认为它是故事板交互的组成部分,可以从类的名称中理解UIStoryboardSegue.以编程方式创建segues是个坏主意.如果我没有犯错误,故事板会为你创建它们.
为了解决你的问题,尝试使用一些常见的方式,如简单的存在ViewController.
let vc = self.storyboard?.instantiateViewControllerWithIdentifier("id") as! MyController
self.presentViewController(vc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
正如我在评论中的对话中所理解的那样.您想使用没有故事板的segue为tableview创建导航到详细信息视图.现在没有故事板就不可能做到这一点.
为了将来学习,请尝试调查此信息.
| 归档时间: |
|
| 查看次数: |
8811 次 |
| 最近记录: |