我有一个包含状态列表的表视图。我没有使用TableViewController创建表视图。我只是将TableView拖到情节提要中。我想知道如何在状态TableView的每个单元格中产生一个表视图。在每个状态单元格内的表格视图中,我希望它包含另一个表格视图,该表格视图具有专门应用于该州的城市列表。例如,“密歇根州”单元格包含城市“底特律”和“弗林特”,而“伊利诺伊州”单元格包含城市“芝加哥”和“罗克福德”(每个州将包含两个以上的城市,这只是一个例子。 )
下面我附上了我的代码。您能否提供清晰的编码以及在何处放置新代码。
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
let textCellIdentifier = "TextCell"
var states = ["Illinois", "Indiana", "Kentucky", "Michigan", "Ohio", "Pennsylvania", "Wisconsin"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return states.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: textCellIdentifier, for: indexPath)
let row = indexPath.row
cell.textLabel?.text = states[row]
return cell
}
private func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) {
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
let row = indexPath.row
print(states[row])
}
}
答案 0 :(得分:0)
也许您要在表格视图中询问部分。只需尝试使用此代码即可获得结果。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var mytbl: UITableView!
var names = ["Illinois": ["Chicago", "Rockford"], "Michigan": ["Detroit", "Flint"]]
struct States {
var sectionName : String!
var sectionObjects : [String]!
}
var stateArray = [States]()
override func viewDidLoad() {
super.viewDidLoad()
for (key, value) in names {
print("\(key) -> \(value)")
stateArray.append(States(sectionName: key, sectionObjects: value))
}
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController : UITableViewDelegate,UITableViewDataSource{
func numberOfSections(in tableView: UITableView) -> Int {
return stateArray.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return stateArray[section].sectionObjects.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
// Configure the cell...
cell.textLabel?.text = stateArray[indexPath.section].sectionObjects[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return stateArray[section].sectionName
}
}