自定义 UITableView 单元格 Nib 文件仅显示在 select 个单元格之后?
Custom UITableView cell Nib file only shows up after select cell?
当我加载我的应用程序时 this is what happens. 由于某种原因,table 视图加载为空白。只有当我 select 单元格并单击另一个单元格时,才会显示之前 selected 的单元格。但是对于第一个cell,不管where/how我点击还是看不到第一个cell
我不明白为什么会这样 b/c 我跟进了 this tutorial. 显然我做错了什么,如果有人能告诉我为什么会这样以及如何解决,我将不胜感激它。
在主情节提要中,我使用了 tableViewController SummaryTableViewController
和自定义 UITableViewCell DayOfWeekTableViewCell
。我有一个名为 DayofWeekSpendingTableViewCell.xib
的 table 视图单元格的 nib 文件。 Here's a list of all my files and their fileneames.
这是我的 SummaryTableViewController
代码:
class SummaryTableViewController: UITableViewController {
var dayOfWeek: [String] = [String]()
var totalSpentPerDay: [Double] = [Double]()
override func viewDidLoad() {
super.viewDidLoad()
dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dayOfWeek.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
// Configure the cell...
let nib = NSBundle.mainBundle().loadNibNamed("DayofWeekSpendingTableViewCell", owner: self, options: nil)
cell = nib[0] as! DayOfWeekTableViewCell
cell.dayOfWeek.text = dayOfWeek[indexPath.row]
cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
return cell
}
}
这是我的自定义单元格 DayOfWeekTableViewCell
代码:
class DayOfWeekTableViewCell: UITableViewCell {
@IBOutlet weak var dayOfWeek: UILabel!
@IBOutlet weak var totalAmountSpent: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
在主情节提要中,我...
- connected the custom cell
DayOfWeekTableViewCell
to the storyboard cell
- identified the storyboard cell as
summaryCell
在 nib 文件中 DayofWeekSpendingTableViewCell.xib
我...
不是在 cellForRowAtIndexPath 中加载 NIB,而是在 viewDidLoad() 中加载 NIB 并将其注册以用于您的 table 视图
override func viewDidLoad() {
super.viewDidLoad()
dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
// Create a nib for reusing
let nib = UINib(nibName: "DayofWeekSpendingTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "summaryCell")
}
然后就可以直接访问cellForRowAtIndexPath中的单元格了:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
let cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
cell.dayOfWeek.text = dayOfWeek[indexPath.row]
cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
return cell
}
当我加载我的应用程序时 this is what happens. 由于某种原因,table 视图加载为空白。只有当我 select 单元格并单击另一个单元格时,才会显示之前 selected 的单元格。但是对于第一个cell,不管where/how我点击还是看不到第一个cell
我不明白为什么会这样 b/c 我跟进了 this tutorial. 显然我做错了什么,如果有人能告诉我为什么会这样以及如何解决,我将不胜感激它。
在主情节提要中,我使用了 tableViewController SummaryTableViewController
和自定义 UITableViewCell DayOfWeekTableViewCell
。我有一个名为 DayofWeekSpendingTableViewCell.xib
的 table 视图单元格的 nib 文件。 Here's a list of all my files and their fileneames.
这是我的 SummaryTableViewController
代码:
class SummaryTableViewController: UITableViewController {
var dayOfWeek: [String] = [String]()
var totalSpentPerDay: [Double] = [Double]()
override func viewDidLoad() {
super.viewDidLoad()
dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dayOfWeek.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
// Configure the cell...
let nib = NSBundle.mainBundle().loadNibNamed("DayofWeekSpendingTableViewCell", owner: self, options: nil)
cell = nib[0] as! DayOfWeekTableViewCell
cell.dayOfWeek.text = dayOfWeek[indexPath.row]
cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
return cell
}
}
这是我的自定义单元格 DayOfWeekTableViewCell
代码:
class DayOfWeekTableViewCell: UITableViewCell {
@IBOutlet weak var dayOfWeek: UILabel!
@IBOutlet weak var totalAmountSpent: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
在主情节提要中,我...
- connected the custom cell
DayOfWeekTableViewCell
to the storyboard cell - identified the storyboard cell as
summaryCell
在 nib 文件中 DayofWeekSpendingTableViewCell.xib
我...
不是在 cellForRowAtIndexPath 中加载 NIB,而是在 viewDidLoad() 中加载 NIB 并将其注册以用于您的 table 视图
override func viewDidLoad() {
super.viewDidLoad()
dayOfWeek = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
totalSpentPerDay = [0, 7.27, 0, 0, 39, 0, 0]
// Create a nib for reusing
let nib = UINib(nibName: "DayofWeekSpendingTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "summaryCell")
}
然后就可以直接访问cellForRowAtIndexPath中的单元格了:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
let cell = tableView.dequeueReusableCellWithIdentifier("summaryCell", forIndexPath: indexPath) as! DayOfWeekTableViewCell
cell.dayOfWeek.text = dayOfWeek[indexPath.row]
cell.totalAmountSpent.text = String(totalSpentPerDay[indexPath.row])
return cell
}