ios - 正确地用多个部分填充 UITableView 吗?

标签 ios arrays swift uitableview

我是 iOS 编程新手,遇到了一个我无法弄清楚的奇怪问题。我目前正在尝试按如下方式填充表格。有一个初始屏幕,用户可以在其中选择类别 - 体育联盟。我用联赛名称填充一个字符串数组,这些名称随后将成为表格各部分的标题。联赛名称对应于其他数组,其中包含该联赛中的每支球队,但每个联赛中的球队数量不同。这些数组应该填充正确的部分(即每个部分的行数不会是静态的,因为它取决于用户最初选择的联赛)。

目前,我的 numberOfRowsInSection 函数中有类似的内容:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   if leagues[section] == "NBA" {
       if (!contains(allTeams, nbaTeams[0])) {
            allTeams += nbaTeams
       }
   }
   return nbaTeams.count
.
.
.
}

我为每个团队都有多个类似的条款。然后,我尝试在 cellForIndexPath 函数中使用“allTeams”数组,但发生了两件我不希望发生的事情。首先,allTeams 数组的填充顺序与我的 leagues 数组的填充顺序不同,我通过 numberOfRowsInSection 中发生的一些打印语句发现了这一点 - 由于某种原因,部分参数从最大的部分编号开始,然后变为 0 和开始计数...奇怪。其次,这些部分以重复的方式填充。也就是说,第一部分和第二部分填充了相同的团队(或者用户想要多少个部分),尽管它填充的团队数量是正确的(因此 numberOfRowsInSection 中的 return 语句是正确的)。

我觉得我错过了来自 tableViewDataSource 协议(protocol)的这些函数的一些内容。如果这有点拗口,我很抱歉,但我认为这比整个类(class)更容易阅读。感谢您的任何帮助,您可以提供!另外,如果有更好的方法,请告诉我!

最佳答案

我明白了!在 cellForRowAtIndexPath 中,我没有使用 allTeams 来填充各个部分,而是创建了一个具有正确联盟的常量,并且只使用了几个 if 语句,因为我没有大量的联盟:

let currentLeague = leagues[indexPath.section]
if currentLeague == "NBA" {
    cell.textLabel?.text = nbaTeams[indexPath.row]
}

等等

关于ios - 正确地用多个部分填充 UITableView 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343917/

相关文章:

ios - 如何在 ios 中向 soap webservice 发送请求?

Javascript有一个函数不返回值

ruby - 将每个数组元素添加到 ruby​​ 文件的行中

arrays - Swift 2 - 合并两个数组

ios - 如何在表格 View 中自动滚动? ( swift )

ios - 如何将 TableView 的刷新控制实现为常用功能

ios - 从另一个 Popover 中关闭显示为 Popover segue 的 ViewController

iphone - 是否有捕获控制台日志的 iPad/电话应用程序(来自 iPhone 配置实用程序)

IOS Twitter 使用 PFLogInViewController 解析登录

ios - Swift:UIpickerView 在 UIlabel 上返回数字