是快速编程的新手。我有一个带有单个自定义单元格的tableview。在页面顶部,我有一个段控件。在我的自定义单元格中,我有两个标签和文本字段。加载页面时,第一段将在段控制中处于选中状态,表行计数应为5.
如果我在段中选择第二个选项,我应该再加载一行,即第6行,并从第二行隐藏一个文本字段。能够加载5行的tableview。当用户从段中选择时,我无法重新加载包含6行的表。这是我的代码,
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let numberOfRowsAtSection: [Int] = [5, 6]
var selectedOption: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
reportTable.delegate = self
reportTable.dataSource = self
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var rows: Int = 0
if tableView == self.reportTable && selectFromOptions.selectedSegmentIndex == 0 && selectedOption == true {
selectedOption = false;
if section == 0 {
rows = 5
}
} else if selectFromOptions.selectedSegmentIndex == 1 && selectedOption == true {
if section == 1 {
rows = 6
}
}
return rows
}
@IBAction func optionChanges(sender: UISegmentedControl) {
switch selectFromOptions.selectedSegmentIndex {
case 0:
selectedOption = true
reportTable.reloadData()
case 1:
selectedOption = true
reportTable.reloadData()
default:
break;
}
}
我如何实现上述目标?提前致谢。
答案 0 :(得分:0)
您在代码中检查if section == 1
部分时出错。只有一个部分,其索引始终为0.您应该能够通过在selectedOption
中设置断点并逐步查看传入的值以及您要执行的代码路径来发现这一点。 / p>
我认为这应该有效:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var rows: Int = 0
if tableView == self.reportTable && selectFromOptions.selectedSegmentIndex == 0 && selectedOption == true {
selectedOption = false;
if section == 0 {
rows = 5
}
} else if selectFromOptions.selectedSegmentIndex == 1 && selectedOption == true {
if section == 0 {
rows = 6
}
}
return rows
}
我没有完整的代码上下文,但似乎上面可能有一些不必要的条件。这不会产生预期的结果吗?
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch selectFromOptions.selectedSegmentIndex {
case 0:
return 5
case 1:
return 6
default:
return 0
}
}