私はUITableViewControllerから別のUITableViewControllerにデータを渡します。これら2つのUITableViewControllerにはカスタムセルがあります。 segueでデータを渡すと、私はカスタムUITableViewCellコントローラで構築したラベルのメンバーがないと言うので、sourceViewControllerからデータを取得できません。 menuControllerにはメンバーが見つからない2つのUITableView間でデータを渡します。
主な問題。 menuControllerにカスタムセルを継承または委譲する必要がありますか?ここで
はOrdersControllerのコードです:ここで
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のカスタムセルのコードです:ここで
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)
}
はmenuControllerのコードです:
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)
}
}
私はこれをどのように行うことができますか? - > [オーダー]の[追加]ボタンをクリックすると、メニューが表示されます。ユーザーがステッパーをクリックして数量を選択します。ユーザーが[完了]をクリックすると、データは[注文]に戻ります。数量が0ではない商品は、オーダーのリストに表示されます。
ですから、これらのアウトレットをmenuControllerとmenuCustomCellの両方に割り当てる必要がありますか? – marcshj
あなたはtableviewを使用しているので、cellForRowAtIndexPathがセルを入力します。これは一般的にアイテムの配列です。静的なセルがある場合は、それらをサブクラス化する必要はありません。ちょうどView Controllerに直接アウトレットを作成することができます。 – DogCoffee