Ios 使用UITableViewController进行PrepareForSegue-传递数据
我的代码有一个很大的问题。我的问题是,如何从用户单击的tableviewcell中获取数据到详细视图控制器 我已经从数组中获取数据并将其显示在我的tableviewcontroller中,但是如何使用prepareForSegue将数据传递到新的viewcontroller 这是我在单元格中显示数据的代码Ios 使用UITableViewController进行PrepareForSegue-传递数据,ios,swift,uitableview,tableviewcell,Ios,Swift,Uitableview,Tableviewcell,我的代码有一个很大的问题。我的问题是,如何从用户单击的tableviewcell中获取数据到详细视图控制器 我已经从数组中获取数据并将其显示在我的tableviewcontroller中,但是如何使用prepareForSegue将数据传递到新的viewcontroller 这是我在单元格中显示数据的代码 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&
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意味着我不能使用例如mean.name将名称传递给detail viewcontroller?怎么办
希望你们能帮助我-我已经为此挣扎了一段时间:-(当你点击一个单元格时。它将调用
didSelectRow
。在didSelectRow
中保存indexPath.row
并使用标识符执行performsguewithidentifier
现在在prepareForSegue
中,使用fines[selectedIndex]
从数组中获取对象,并分配给detailViewController
对象
单击单元格时,确保segue
从ViewController
到ViewController
。它将调用didSelectRow
。在didSelectRow
中保存indexPath.row
并使用标识符执行performsguewithidentifier
现在在prepareForSegue
中,使用fines[selectedIndex]
从数组中获取对象,并分配给detailViewController
对象
确保segue
是从ViewController
到ViewController
正如Arun所指出的,您需要使用-prepareforsgue
。以下是我将要做的事情,以便将某些内容传递给您的详细视图控制器(比如deal.name
)
最后,只需使用故事板将UITableViewCell
与MyDetailViewController
连接起来(并选择您喜欢的任何演示和转换样式)
为Swift 4编辑
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let cell = sender as! UITableViewCell
let indexPath = self.tableView.indexPath(for: cell)
// Get the relevant detail
let meal = meals[indexPath!.row]
// Create reference and pass it
let detailViewController = segue.destination as! MyDetailViewController
detailViewController.mealName = meal.name
}
正如Arun所指出的,您需要使用-prepareforsgue
。下面是我将要做的事情,以便将某些内容传递给您的详细视图控制器(比如deal.name
)
最后,只需使用故事板将UITableViewCell
与MyDetailViewController
连接起来(并选择您喜欢的任何演示和转换样式)
为Swift 4编辑
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let cell = sender as! UITableViewCell
let indexPath = self.tableView.indexPath(for: cell)
// Get the relevant detail
let meal = meals[indexPath!.row]
// Create reference and pass it
let detailViewController = segue.destination as! MyDetailViewController
detailViewController.mealName = meal.name
}