【发布时间】:2016-07-19 10:52:04
【问题描述】:
我正在创建一个应用程序,其中 ViewController 中的不同按钮将不同的菜单加载到 tableViewController 中。按钮由准备转场链接,菜单(数组)由 contentMode 链接。 1:早餐菜单和 2:午餐菜单。我得到了设置它的人的帮助,但现在表格没有加载任何数据......该单元格有 3 个标签,显示项目、信息和价格。选择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 == "showLunch" {
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
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] = []
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
switch (contentMode){
case 1: contentMode = 1
foodItems = breakfastItems
foodInfo = breakfastInfo
foodPrice = breakfastPrice
case 2: contentMode = 2
foodItems = lunchItems
foodInfo = lunchInfo
foodPrice = lunchPrice
default:
break
}
tableView.reloadData()
}
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
}
}
【问题讨论】:
-
如果您回答了这个问题,那么您应该标记并关闭它。它已经是重复的了。不要让它打开。另请注意缺少的点。还要确保您遵循通用命名标准。
class名称必须以大写字符开头。 -
对不起@Mathews,但我处理这个问题已经太久了,所以我只是急于解决它。但是,我只是打印了这个值,它确实以 contentMode "0" 的形式返回,所以我必须看看问题出在哪里。
-
所以请看一下
FoodMenuViewController中的prepareForSegue方法。如果 segue 标识符错误,它将不会根据需要设置contentMode。 -
@Mathews - 检查了故事板和代码中的 prepareForSegue 标识符,两者都相同....所以我真的不知道为什么它没有将 contentMode 更改为 1?...顺便说一句谢谢虽然到目前为止你帮了很大的忙!我只是想让这个工作....
-
请你上传`xcodeProject`文件。这将有助于调试。
标签: ios arrays swift uitableview tableview