Swift iOS 应用程序 - 静态分配 table 具有动态变化行的属性
Swift iOS app - statically assigning table properties with dynamically changing rows
我对 iOS 编程还很陌生。我正在尝试开发一个总是有 2 个部分(这是静态部分)的 table,但标签需要能够动态更改它们所在的部分。这是一个例子:
第 1 部分
- 项目名称 1
- 项目名称 2
- 项目名称 3
第 2 部分
- 项目名称 4
- 项目名称 5
- 项目名称 6
在任何给定时间(由我的代码指定),任何项目都可以实时从第 1 部分从第 2 部分切换,反之亦然,即它们可以在用户查看 table.这将需要两个部分的大小发生明显变化。
遗憾的是我没有可展示的代码,因为我不太确定从哪里开始。我的情节提要中只有一个 UITableView。我将 "Content" 属性 设置为动态原型,但我希望部分的数量是静态的,但我找不到指定方法。我查看了文档并找到了 numberOfSections(),它只有 returns 个部分计数。以前有人做过类似的事情吗?谢谢
Apple 的文档是您 iOS 编程中最好的朋友!您可以使用 numberOfSections() 来 return 部分的数量,在您的情况下似乎是 2。cellForRowAtIndexPath 方法是 UITableView 中神奇的地方。这里有 indexPath 变量,您可以使用它来定位数据并将其放置在您想要的位置。如果 Table 视图的数据在一个数组中,您可以访问它并使用 [indexPath.row] 或 [indexPath.section] 对其进行排列。我知道这看起来非常困难且令人困惑,但弄清楚如何做到这一点的最好方法是进行实验。有很多方法可以做同样的事情,所以请阅读一些 Apple 的文档(您可以在 Xcode 中找到它,查看来自 YouTube、本网站等的一些示例代码,然后进行实验!祝您好运:)
更新:
好的,这就是您如何完成此操作的方法。随意更改您认为合适的内容:)
设置单元格数据
好的,所以能够动态更改数据的最佳方法是使用多维数组(别担心,使用它相当容易!)
例如:
var tableData = [["1st sec1", "first sec2"], ["2nd sec1", "2nd sec2"]]
要指定 table 视图中的部分数量,您可以使用:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return tableData.count
这将 return 我们的多维数组中的数组数量,在本例中有两个。
那么要指定每个部分的行数,请使用:
override func tableView(tableView: UITableView, numberOfRowsInSectionsection: Int) -> Int {
return tableData[section].count
}
这将 return 我们的多维数组中各个数组中的项目数,由函数参数中提供的 "section" 定义。
现在,我不完全确定您将在哪里决定何时将数据从代码中的一个部分移动到另一部分,但是无论您决定这样做,您都可以使用它来移动数据多维数组:
var dataToMove = tableData[0][1]
// in this example, dataToMove will have a value of "first sec2"
tableData[0].removeAtIndex(1)
// this will remove "first sec2" from the array
tableData[1].append(dataToMove)
// this will place "first sec2" into the second section of the array
好的,完成困难的部分后,您可以自定义单元格:
// put this code in cellForRowAtIndexPath:
let cellTitle = tableData[indexPath.section][indexPath.row]
// after this, just set the title of the cell to the cellTitle variable, and you're set!
命名Table查看部分
这是命名 Table 视图的部分的快速而肮脏的方法:
所以首先你需要做一个数组(这次可以是一个普通的:))
let sectionTitles = ["First Section", "Second Section"]
然后使用此函数设置章节标题:
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section < sectionTitles.count {
return sectionTitles[section]
}
return nil
}
现在我们可以只输入:return sectionTitles[section],但是如果有一个部分我们没有标题,应用程序就会崩溃,所以如果有数组中的部分没有标题,它的标题将为空。
希望能帮到你!!
我对 iOS 编程还很陌生。我正在尝试开发一个总是有 2 个部分(这是静态部分)的 table,但标签需要能够动态更改它们所在的部分。这是一个例子:
第 1 部分
- 项目名称 1
- 项目名称 2
- 项目名称 3
第 2 部分
- 项目名称 4
- 项目名称 5
- 项目名称 6
在任何给定时间(由我的代码指定),任何项目都可以实时从第 1 部分从第 2 部分切换,反之亦然,即它们可以在用户查看 table.这将需要两个部分的大小发生明显变化。
遗憾的是我没有可展示的代码,因为我不太确定从哪里开始。我的情节提要中只有一个 UITableView。我将 "Content" 属性 设置为动态原型,但我希望部分的数量是静态的,但我找不到指定方法。我查看了文档并找到了 numberOfSections(),它只有 returns 个部分计数。以前有人做过类似的事情吗?谢谢
Apple 的文档是您 iOS 编程中最好的朋友!您可以使用 numberOfSections() 来 return 部分的数量,在您的情况下似乎是 2。cellForRowAtIndexPath 方法是 UITableView 中神奇的地方。这里有 indexPath 变量,您可以使用它来定位数据并将其放置在您想要的位置。如果 Table 视图的数据在一个数组中,您可以访问它并使用 [indexPath.row] 或 [indexPath.section] 对其进行排列。我知道这看起来非常困难且令人困惑,但弄清楚如何做到这一点的最好方法是进行实验。有很多方法可以做同样的事情,所以请阅读一些 Apple 的文档(您可以在 Xcode 中找到它,查看来自 YouTube、本网站等的一些示例代码,然后进行实验!祝您好运:)
更新: 好的,这就是您如何完成此操作的方法。随意更改您认为合适的内容:)
设置单元格数据
好的,所以能够动态更改数据的最佳方法是使用多维数组(别担心,使用它相当容易!) 例如:
var tableData = [["1st sec1", "first sec2"], ["2nd sec1", "2nd sec2"]]
要指定 table 视图中的部分数量,您可以使用:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return tableData.count
这将 return 我们的多维数组中的数组数量,在本例中有两个。
那么要指定每个部分的行数,请使用:
override func tableView(tableView: UITableView, numberOfRowsInSectionsection: Int) -> Int {
return tableData[section].count
}
这将 return 我们的多维数组中各个数组中的项目数,由函数参数中提供的 "section" 定义。
现在,我不完全确定您将在哪里决定何时将数据从代码中的一个部分移动到另一部分,但是无论您决定这样做,您都可以使用它来移动数据多维数组:
var dataToMove = tableData[0][1]
// in this example, dataToMove will have a value of "first sec2"
tableData[0].removeAtIndex(1)
// this will remove "first sec2" from the array
tableData[1].append(dataToMove)
// this will place "first sec2" into the second section of the array
好的,完成困难的部分后,您可以自定义单元格:
// put this code in cellForRowAtIndexPath:
let cellTitle = tableData[indexPath.section][indexPath.row]
// after this, just set the title of the cell to the cellTitle variable, and you're set!
命名Table查看部分
这是命名 Table 视图的部分的快速而肮脏的方法: 所以首先你需要做一个数组(这次可以是一个普通的:))
let sectionTitles = ["First Section", "Second Section"]
然后使用此函数设置章节标题:
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section < sectionTitles.count {
return sectionTitles[section]
}
return nil
}
现在我们可以只输入:return sectionTitles[section],但是如果有一个部分我们没有标题,应用程序就会崩溃,所以如果有数组中的部分没有标题,它的标题将为空。
希望能帮到你!!