经过几天的挣扎,我无法弄清楚如何解决这个问题。我正在制作一个简单的餐厅应用。 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
}
}
答案 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
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
将根据需要填充。