2016-04-11 9 views
0

私はUITableViewControllerから別のUITableViewControllerにデータを渡します。これら2つのUITableViewControllerにはカスタムセルがあります。 segueでデータを渡すと、私はカスタムUITableViewCellコントローラで構築したラベルのメンバーがないと言うので、sourceViewControllerからデータを取得できません。 menuControllerにはメンバーが見つからない2つのUITableView間でデータを渡します。

I link the 2 UITableViewController by push segue

主な問題。 menuControllerにカスタムセルを継承または委譲する必要がありますか?ここで

Here is the main problem that find no member in 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ではない商品は、オーダーのリストに表示されます。

答えて

0

あなたのmenuControllerクラスはその変数menuNameを持っていないので、それが見つからないのです。

ビューコントローラには、すべてitemspriceがあります。

カスタムセル内にmenuNameがあります。これはあなたが押しているviewControllerとは異なります。

+0

ですから、これらのアウトレットをmenuControllerとmenuCustomCellの両方に割り当てる必要がありますか? – marcshj

+0

あなたはtableviewを使用しているので、cellForRowAtIndexPathがセルを入力します。これは一般的にアイテムの配列です。静的なセルがある場合は、それらをサブクラス化する必要はありません。ちょうどView Controllerに直接アウトレットを作成することができます。 – DogCoffee

関連する問題