如何解决将单元格重新加载到另一个视图控制器后如何传递数据
我有一个视图控制器,它对第一个视图控制器中的单元格重新排序,但重新排序未反映在第二个视图控制器中。我尝试使用结构来传递数据,但这是不可能的。使用 commonInit 我将详细信息传递给第二个视图控制器
import UIKit
import CoreData
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int
{
return name.count
}
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat {
return 95
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId",for: indexPath) as! PizzaListTableViewCell
/* let data = pizza[indexPath.row]
cell.textLabel?.text = data.name
cell.textLabel?.text = data.miscellaneousText
cell.textLabel?.text = data.amount */
cell.commonInit(_imageName: "pizza_\(indexPath.item)",title:name[indexPath.item],text: miscellaneousText[indexPath.item],amount: amount[indexPath.item])
return cell
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let vc = DetailsVC()
vc.commonInit("pizza_\(indexPath.item)",amount: amount[indexPath.item],pizzaTextField: pizzaToppings[indexPath.item])
self.navigationController?.pushViewController(vc,animated: true)
self.tableView.deselectRow(at: indexPath,animated: true)
}
func tableView(_ tableView: UITableView,canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView,moveRowAt sourceIndexPath: IndexPath,to destinationIndexPath: IndexPath) {
let item = name[sourceIndexPath.row]
name.remove(at: sourceIndexPath.row)
name.insert(item,at: destinationIndexPath.row)
}
下一个视图控制器名称是 DetailsVC()。重新排序不会反映在这个视图控制器中。
import UIKit
import CoreData
class DetailsVC: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate{
let name = ["Bacon Cheese Fry","Pizza Margherita"]
let miscellaneousText = ["Accepted","Accepted"]
let amountArr = ["39.99","39.99"]
@IBOutlet weak var detailImage: UIImageView!
var imageName: String!
var titleName: String!
@IBOutlet weak var text: UILabel!
var textName: String!
var textDescript: String!
@IBOutlet weak var amount: UILabel!
var amountName: String!
func commonInit(_ imageName: String,title: String,text: String,amount: String,pizzaTextField:String)
{
self.imageName = imageName
self.title = title
self.textName = text
self.amountName = amount
self.pizzaText = pizzaTextField
}
解决方法
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let storyBoard = UIStoryboard(name: "StoryboardName",bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "yourVCIdentifier") as? DetailsVC
vc?.commonInit("pizza_\(indexPath.item)",title:name[indexPath.item],text: miscellaneousText[indexPath.item],amount: amount[indexPath.item],pizzaTextField: pizzaToppings[indexPath.item])
self.navigationController?.pushViewController(vc,animated: true)
self.tableView.deselectRow(at: indexPath,animated: true)
}
编辑:
使用 XIB
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let vc = DetailVC(nibName: "YourNibName",bundle: nil)
vc.commonInit("pizza_\(indexPath.item)",pizzaTextField: pizzaToppings[indexPath.item])
self.navigationController?.pushViewController(vc,animated: true)
self.tableView.deselectRow(at: indexPath,animated: true)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。