这是this问题的一个延续,但基本上我试图找出如果函数的结果为零,我怎么能不返回单元格。
这是我的代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("rideCell", forIndexPath: indexPath) as! RideCell
var ride = DataManager.sharedInstance.getRideByName(favouritesArray[indexPath.row] as! String)
println(ride)
if ride != nil {
cell.rideNameLabel.text = ride!.name
var dateFormat = NSDateFormatter()
dateFormat.dateFormat = "h:mm a"
cell.updatedLabel.text = dateFormat.stringFromDate(ride!.updated!)
if ride!.waitTime! == "Closed" {
cell.waitTimeLabel.text = ride!.waitTime!
} else {
cell.waitTimeLabel.text = "\(ride!.waitTime!)m"
}
}
return cell
}
所以目前一切正常,但无论ride
在哪里等于零,我只是返回原型单元格,而我希望它不返回任何内容。
我试图将这些细胞的高度隐藏或改为零,但它看起来似乎是凌乱的解决方案。谁知道更好的?
感谢。
答案 0 :(得分:0)
假设您始终知道您有多少有效行,并通过实施UITableViewDataSource的tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
方法发布此数字。因此,如果在某个时刻行数发生变化,您应该调用UITableView.reloadData
不要试图隐藏多余的行。
要获得一系列有效的游乐设施,请尝试以下方法:
var newArray:[String] = []
for str in favouritesArray where DataManager.sharedInstance.getRideByName(str!) != nil
{
newArray += [str]
}
答案 1 :(得分:0)
通过实施tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) {
if section == 0 {
return arrayName.count
}
return 0
}
答案 2 :(得分:0)
我找到了解决方案。正如一些人提到的那样,在处理cellForRowAtIndexPath
之前,我必须弄清楚要显示什么。
基本上我添加了一些代码来确定哪些收藏夹可以在数组中找到并放在viewWillAppear
中。
for index in 0...favouritesArray.count - 1 {
var ride = DataManager.sharedInstance.getRideByName(favouritesArray[index] as! String)
if ride != nil {
favouritesFound.append(ride!.name!)
println(favouritesFound)
}
}
现在完美运作!谢谢大家。