在 UITableView 的不同部分显示不同的行
Displaying Different Row in Different Section in UITableView
我从 API - 中获取了此数据,这是接下来 7 天的天气预报。我想将其显示为 tableview where
- 日期将作为部分
- 温度(最小/最大)作为行
但是如果我 select 这样的节号 -
func numberOfSections(in tableView: UITableView) -> Int {
return myList.count // myList is an array of containing the 7 day's data
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
它在所有部分打印同一行(数组的第一个数据)。那么如何在不拆分数组的情况下在单独的部分打印单独的天气?
说到UITableView中的section和rows,关键通常是二维数组。
尝试像这样创建一个二维数组:
myList[sectionItems][rowItems]
此数组内部应如下所示:
myList = [
[date, minTemp, maxtemp],
[date, minTemp, maxtemp],
[date, minTemp, maxtemp],
[date, minTemp, maxtemp]
]
因此您的 UITableViewDelegate 和 DataSource 函数将如下所示:
func numberOfSections(in tableView: UITableView) -> Int {
return myList.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myList[section].count
}
以上示例将允许您有 4 个部分,每个部分将有 3 行。
然后你可以在第一行打印日期,其余的在其他行打印。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel.text = myList[indexPath.section][indexPath.row]
return cell
}
我从 API -
- 日期将作为部分
- 温度(最小/最大)作为行
但是如果我 select 这样的节号 -
func numberOfSections(in tableView: UITableView) -> Int {
return myList.count // myList is an array of containing the 7 day's data
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
它在所有部分打印同一行(数组的第一个数据)。那么如何在不拆分数组的情况下在单独的部分打印单独的天气?
说到UITableView中的section和rows,关键通常是二维数组。 尝试像这样创建一个二维数组:
myList[sectionItems][rowItems]
此数组内部应如下所示:
myList = [
[date, minTemp, maxtemp],
[date, minTemp, maxtemp],
[date, minTemp, maxtemp],
[date, minTemp, maxtemp]
]
因此您的 UITableViewDelegate 和 DataSource 函数将如下所示:
func numberOfSections(in tableView: UITableView) -> Int {
return myList.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myList[section].count
}
以上示例将允许您有 4 个部分,每个部分将有 3 行。
然后你可以在第一行打印日期,其余的在其他行打印。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel.text = myList[indexPath.section][indexPath.row]
return cell
}