我的代码存在很大问题。我的问题是,如何从用户点击的详细视图控制器的tableviewcell中获取数据。
我已经从数组中获取数据并将其显示在tableviewcontroller中,但是如何使用prepareForSegue将数据传递给新的viewcontroller?
这是我在单元格中显示数据的代码。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "MealTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MealTableViewCell
// Fetches the appropriate meal for the data source layout.
let meal = meals[indexPath.row]
cell.nameLabel.text = meal.name
cell.photoImageView.image = meal.photo
cell.descriptionLabel.text = meal.description
cell.servedWithLabel.text = meal.servedWith
return cell
}
问题是,在那之外调用prepareForSegue意味着我不能使用例如meal.name将名称传递给详细视图控制器?怎么办?
希望你们能帮助我 - 我一直在努力解决这个问题: - (
答案 0 :(得分:2)
正如Arun所指出的,你需要使用-prepareForSegue
。以下是我将某些内容传递给您的详细视图控制器的操作(例如meal.name
)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Use this to determine the selected index path. You can also store the selected index path in a variable using -didSelectRowAtIndexPath
let cell = sender as! UITableViewCell
let indexPath = self.tableView.indexPathForCell(cell)
// Get the relevant detail
let meal = meals[indexPath.row]
// Create reference and pass it
let detailViewController = segue.destinationViewController as! MyDetailViewController
detailViewController.mealName = meal.name
}
最后,只需使用UITableViewCell
与MyDetailViewController
Storyboard
联系(并选择您喜欢的任何演示文稿和过渡样式)
答案 1 :(得分:0)
单击一个单元格。它会调用didSelectRow
。在didSelectRow
中保存indexPath.row
并执行performseguewithidentifier
现在在prepareForSegue
中使用meals[selectedIndex]
从数组中获取对象并分配给detailViewController
Objects
。
确保segue
来自ViewController
到ViewController
。