如何准备segue在TableViewController中加载不同的数组?

时间:2016-03-30 13:10:51

标签: ios arrays xcode swift uitableview

经过几天的挣扎,我无法弄清楚如何解决这个问题。我正在制作一个简单的餐厅应用。 foodMenuController包含2个按钮,必须将不同的菜单数组加载到tableViewController(午餐,早餐)。要定义应该加载的菜单,有人告诉我使用variable -> contentMode

在我的TableViewController我将contentMode设置为"0"。在我的foodMenuController中,我使用带有标识符的segue准备将contentMode设置为1(早餐)和2(午餐)。

现在的问题是我的表不知道它何时在contentMode 1或2中,也不知道在何处以及如何编写代码以指示在某个contentMode中加载不同数组的表。我希望有人可以帮助我解决我在下面发布的代码。

import UIKit

class foodMenuController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
            let foodMenuController = segue.destinationViewController as! foodTableViewController

            if segue.identifier == "showBreakfast" {
                foodMenuController.contentMode = 1
            } else if segue.identifier == "showBakery" {
                foodMenuController.contentMode = 2
            }
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
import UIKit

class foodTableViewCell: UITableViewCell {

    @IBOutlet weak var foodItem: UILabel!
    @IBOutlet weak var foodDescription: UILabel!
    @IBOutlet weak var foodPrice: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

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

        // Configure the view for the selected state
    }
}
import UIKit

class foodTableViewController: UITableViewController {

    // Content Mode Selection in menu
    var contentMode = 0

    // THIS SHOULD BE LOADED WHEN CONTENT MODE is "1" --> BREAKFAST
    var foodItems = ["Bread", "Coffee", "Nada"]
    var foodInfo = ["Good", "Nice", "Nothing"]
    var foodPrice = ["$1", "$100", "$12,40"]

    // THIS SHOULD BE LOADED WHEN CONTENT MODE IS "2" --> LUNCH
    var foodItems = ["Not bread", "Not Coffee", "Something"]
    var foodInfo = ["Not good", "Not nice", "Yes"]
    var foodPrice = ["$1", "$100", "$12,40"]


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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // Table view data source
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

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

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

        cell.foodItem.text = foodItems[indexPath.row]
        cell.foodDescription.text = foodInfo[indexPath.row]
        cell.foodPrice.text = foodPrice[indexPath.row]

        return cell
    }
}

1 个答案:

答案 0 :(得分:2)

更改阵列名称,如下所示。

// THIS SHOULD BE LOADED WHEN CONTENT MODE is "1" --> BREAKFAST
let breakfastItems = ["Bread", "Coffee", "Nada"]
let breakfastInfo = ["Good", "Nice", "Nothing"]
let breakfastPrice = ["$1", "$100", "$12,40"]

// THIS SHOULD BE LOADED WHEN CONTENT MODE IS "2" --> LUNCH
let lunchItems = ["Not bread", "Not Coffee", "Something"]
let lunchInfo = ["Not good", "Not nice", "Yes"]
let lunchPrice = ["$1", "$100", "$12,40"]

var foodItems: [String] = []
var foodInfo: [String] = []
var foodPrice: [String] = []

现在检查ViewWillAppear

中contentMode的值
override func viewDidLoad() {
    super.viewDidLoad()

}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)
    switch (contentMode){
    case 1:
        foodItems = breakfastItem
        foodInfo = breakfastInfo
        foodPrice = breakfastPrice
    case 2:
        foodItems = lunchItem
        foodInfo = lunchInfo
        foodPrice = lunchPrice
    default:
        break
    }
    tableView.reloadData()
}

这会将所需的项目,信息,价格数组复制到foodItem,foodInfo和foodPrice数组中。其余代码将正常工作,UITableView将根据需要填充。