目前,我有一个应用程序将数据加载到呈现给用户的tableview中,我希望他们选择他们希望查看的对象的更多详细信息。从他们希望能够以各种形式将对象中的数据读出给用户标签或依赖于数据的tableview。
我一直在读书并试图理解这些东西,但这对我来说还是新鲜的!我在这里有另一个人帮我保存数据并将数据传递到商店,但读取它是一个看似不同的事情。快速语言中的任何例子都会让我走上正确的道路,我知道我需要使用didselectrow方法并调用segue,而且我需要准备segue但我不太确定它应该是什么样的。
我已经阅读了多个帖子,有些确实尝试传递对象,但不是按照我尝试的方式进行传递。在将它们从tableview中选择到另一个视图控制器之后,您是否能够传递整个对象显示与该对象相关的所有数据,或者您只能将该对象的信息传递给下一个viewcontroller?我有一些prepareforsegue和执行segue的例子,不知道我还缺少什么,但我目前无法在tableview和viewcontroller之间传递任何信息。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "decktoRecord") {
var detailVC: StatWidgetViewController = segue.destinationViewController as! StatWidgetViewController
detailVC.deckRecord = decktoPass
}
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow()
let selectedCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell?
self.performSegueWithIdentifier("decktoRecord", sender: indexPath);
}
decktoPass只是一个变量,它包含作为对象主要实体的数据实体的类型。
答案 0 :(得分:2)
有点困惑的是你提出的问题,但据我所知,一旦用户点击你想要转移到另一个视图控制器的单元格,他们可以编辑细节?
要添加异常断点,请打开左侧面板,其中包含所有文件/ viewcontrollers,它的顶部应该是一个带有几个图标的小面板,第一个是文件夹,单击第二个最后一个(看起来像标签的那个) 单击右下角的加号,然后单击添加异常断点,这可以让您知道代码中的问题发生在哪里
可以通过从原始视图控制器
准备segue来编辑另一个View控制器中的详细信息 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showTaskDetail" {
let detailVC: TaskDetailViewController = segue.destinationViewController as! TaskDetailViewController
let indexPath = self.tableView.indexPathForSelectedRow()
let thisTask = fetchedResultsController.objectAtIndexPath(indexPath!) as! TaskModel
detailVC.detailTaskModel = thisTask
detailVC.delegate = self
}
else if segue.identifier == "showTaskAdd" {
let addTaskVC:AddTaskViewController = segue.destinationViewController as! AddTaskViewController
addTaskVC.delegate = self
}
}
好吧,就像上面显示的代码一样,我有一个名为showTaskDetail的segue,它显示了它的详细信息,在我的例子中它是一个简单的任务。您说当用户单击该行时您想在另一个视图控制器中编辑此信息,您需要能够在另一个视图控制器中获取此信息。
所以在另一个将保存这些值的viewcontroller中创建一个变量,对我来说我称之为detailTaskModel
var detailTaskModel: TaskModel!
让你对TaskModel是什么感到困惑,我使用CoreData来存储我的数据,而TaskModel是一个NSMangedObject类。
let detailVC: TaskDetailViewController = segue.destinationViewController as! TaskDetailViewController
这一行你只是指定你的其他视图控制器是什么,用你的swift类替换TaskDetailViewController。
let detailVC: TaskDetailViewController = segue.destinationViewController as! TaskDetailViewController
此行从所选行中提取数据
现在您应该能够将您的信息传递到其他视图控制器并使用detailTaskModel进行编辑,您是否也需要帮助?