如何在UITableView的numberOfRowsInSection函数中按条件返回整数值
解决方案:根据section标题动态返回表格行数
先明确你的需求:
若标签标题包含
stadiumName的值,numberOfRowsInSection函数需返回first!.count;若标签标题包含countryName的值,该函数需返回3。
结合你给出的代码片段,我帮你补全并优化了逻辑,避免强制解包带来的崩溃风险:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { let pfile = Bundle.main.path(forResource: "scheduling", ofType: "plist") let indexes = defaults.integer(forKey: "index") let indexes2 = defaults.integer(forKey: "index2") // 👇 替换成你实际获取stadiumName、countryName的逻辑 guard let stadiumName = someWayToGetStadiumName(), let countryName = someWayToGetCountryName(), // 获取当前section的标题 let sectionTitle = tableView.dataSource?.tableView?(tableView, titleForHeaderInSection: section) else { // 标题或名称获取失败时的默认返回值 return 0 } // 👇 替换成你实际获取first数组的逻辑(比如从plist解析得到) if sectionTitle.contains(stadiumName) { guard let first = someWayToGetFirstArray() else { return 0 } return first.count } else if sectionTitle.contains(countryName) { return 3 } else { // 其他section的默认行数 return 0 } }
几个关键注意点:
- 绝对不要用
first!.count这种强制解包写法,一旦first为空会直接崩溃,用guard let做安全校验才是稳妥的做法。 - 你需要把代码里的
someWayToGetStadiumName()、someWayToGetCountryName()、someWayToGetFirstArray()替换成你实际的取值逻辑——比如从plist文件解析数据、或者从其他存储容器里读取这些值。 - 如果section标题可能为空,一定要提前做判断,避免调用
contains方法时出现异常。
内容的提问来源于stack exchange,提问作者jamryu
相关产品推荐
相关产品推荐

