xcode - 使用自定义单元格在两个 UITableView 之间传递数据

标签 xcode swift uitableview

我要将数据从一个 UITableViewController 传递到另一个 UITableViewController。这两个 UITableViewController 中有自定义单元格。 当我通过 segue 传递数据时,我无法从 sourceViewController 获取数据,因为它说没有我在自定义 UITableViewCell Controller 中构建的标签的成员。

I link the 2 UITableViewController by push segue

主要问题是在 menuController 中找不到成员。我是否需要将自定义单元格继承或委托(delegate)给 menuController 或推送它?

Here is the main problem that find no member in menuController

这是订单 Controller 的代码:

import UIKit
struct Order { 
   var tilte:String 
   var price:String 
   var quantity:String
}

class ordersController: UITableViewController {
var orders = Array<Order>()

override func viewDidLoad() {
    super.viewDidLoad()
}

//handle exit from Cancel back of menuController
@IBAction func cancelBack(segue: UIStoryboardSegue){
}

//handle exit from Done back of menuController
@IBAction func doneBack(segue: UIStoryboardSegue){
    print("Done and Back")

    //let source = segue.sourceViewController as! newMenu
    //let quantity = source.burgerQuan.text

}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.orders.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("orderedItem", forIndexPath: indexPath) as! ordersCustomCell

    let order:Order = self.orders[indexPath.row]
    cell.ordersName.text = orders[indexPath.row].title
    cell.ordersPrice.text = orders[indexPath.row].price
    cell.ordersQuantity.text = orders[indexPath.row].quantity

    return cell
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

这里是 ordersController 的自定义 Cell 的代码:

class ordersCustomCell: UITableViewCell {

@IBOutlet weak var ordersName: UILabel!
@IBOutlet weak var ordersPrice: UILabel!
@IBOutlet weak var ordersQuantity: UILabel! 

override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

这是菜单 Controller 的代码:

class menuController: UITableViewController {

var items:[String] = ["Hamburger","French Fries", "Coffee", "Lemon Tea"]
var price:[String] = ["$29", "$13", "$25", "$8"]

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.items.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("menuItem", forIndexPath: indexPath) as! menuCustomCell

    cell.menuName.text = self.items[indexPath.row]
    cell.menuPrice.text = self.price[indexPath.row]

    return cell
}
}

这里是 menuController 自定义单元格的代码:

class menuCustomCell: UITableViewCell {

@IBOutlet weak var menuName: UILabel!
@IBOutlet weak var menuPrice: UILabel!
@IBOutlet weak var menuQuantity: UILabel!
@IBOutlet weak var stepper: UIStepper!

@IBAction func stepperValueChanged(sender: UIStepper) {
    menuQuantity.text = Int(sender.value).description
}

override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}
}

我该怎么做? --> 单击订单中的添加按钮时,它会显示菜单。用户点击步进器选择数量。然后,当用户单击 Done 时,数据传回 Orders。数量不为0的商品将显示在Orders的列表中。

最佳答案

您的 menuController 类没有那个变量 menuName,这就是它找不到它的原因。

您所拥有的只是该 View Controller 中的 itemsprice

您的自定义单元格中有 menuName。这也与您推送的 viewController 不同。

关于xcode - 使用自定义单元格在两个 UITableView 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540273/

相关文章:

ios - 使用 Xcode 4.5 加载 TableView Controller 时在 iOS 6 设备上崩溃。通用汽车

iphone - 如何使 View 看起来像报摊书架

ios - 在 Xcode 9.2 中看不到 XCUITest 的录制红色按钮

ios - 尝试导航到另一个 View Controller 时,快速导航 Controller 返回 nil

ios ScrollView 的自动布局架构技巧

ios - 如何在 Web 服务 swift 中以 POST 形式发送图像

xcode - 是否存在用于在Xcode中循环显示实用标记或方法的键盘快捷键?

ios - 显示对象的 X 坐标和 Y 坐标?

ios - 使用swift 3点击单元格时如何在Avplayer中播放来自url的视频

ios - 由于单元格为空,如何检索 UserDefaults