我有3个阵列,即今天,这个周,等,即时和我想根据所有三个数组中的数据创建部分,如果所有数组计数大于0然后是3个部分,如果计数2然后是两个部分,如果没有数据任何数组然后不创建该部分那么在tableView委托方法中创建它的最佳条件是什么?提供此代码的任何替代方案! 提前致谢!! 快乐编码!!
目前我的代码是:
func numberOfSections(in tableView: UITableView) -> Int {
if self.todayDataAry.count > 0 {
if self.thisWeekDataAry.count > 0 {
if self.upcomingDataAry.count > 0 {
return 3 // all sections today,this week,upcoming
} else {
return 2 //today,this week
}
} else {
if self.upcomingDataAry.count > 0 {
return 2 //today,upcoming
} else {
return 1 //today
}
}
} else {
if self.thisWeekDataAry.count > 0 {
if self.upcomingDataAry.count > 0 {
return 2 //this week, upcoming
} else {
return 1 //this week
}
} else {
if self.upcomingDataAry.count > 0 {
return 1 //upcoming
} else {
return 0 //no data
}
}
}
}
答案 0 :(得分:2)
创建另一个数组并在其中存储3个数组
var allDetails = [todayAry, thisWeekAry, upcomingAry]
var filteredDetails = allDetails.filter { !$0.isEmpty }
然后改变这样。过滤器删除空数组并返回非空数组计数。
func numberOfSections(in tableView: UITableView) -> Int {
return filteredDetails.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return filteredDetails[section].count
}
你也可以在cellForRow方法中做同样的事情
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
var cell:UITableViewCell! = tableView.dequeueReusableCell(withIdentifier: "cell")
if cell == nil
{
cell = UITableViewCell.init(style: UITableViewCellStyle.default, reuseIdentifier: "tripHistory")
}
cell.textLabel.text = filteredDetails[indexPath.section][indexPath.row]
}