我想这可能是我无法想象的新手错误之一。
我有一个具有表格视图的应用程序。它有文字标签和详细文字标签。
当我选择一行时,我会使用segue将我带到另一个故事板...除了模拟器上的表格视图显示外,所有这些工作正常。
详细文本标签显示在此图片中显示的模拟器上。
这是我用来检测所选单元格/行的代码。当我发表评论时,这个问题就消失了......
您在红色圆圈中看到的内容是按等级选择的,它也位于tableview的详细文本标签中。
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
let gradeselected = String(describing: sgrade)
return [gradeselected]
}
带有问题的模拟器的屏幕截图
请帮助解决此问题。如果您需要更多信息,请与我们联系。
Xcode 9.1 斯威夫特4
@Caleb这是我的代码。
import UIKit
class StudentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var cellButton: UIButton!
@IBOutlet weak var studentDetailTable: UITableView!
var sname:[String]?
var sgrade:[Int]?
var gradetext = "Grade:"
var sstudentname = ""
override func viewDidLoad() {
super.viewDidLoad()
studentDetailTable.delegate = self
studentDetailTable.dataSource = self
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sname!.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = studentDetailTable.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = sname[indexPath.row] + gradetext + String(sgrade[indexPath.row])
sstudentname = sname![indexPath.row]
cell?.detailTextLabel?.text = String(sgrade![indexPath.row])
cell?.layer.cornerRadius = (cell?.frame.height)!/2
cell?.backgroundColor = UIColor.blue
cell?.textLabel?.textColor = UIColor.white
cell?.layer.borderWidth = 6.0
cell?.layer.cornerRadius = 15
cell?.layer.borderColor = UIColor.white.cgColor
cell?.textLabel?.textColor = UIColor.white
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedIndex = tableView.dataSource?.sectionIndexTitles!(for: studentDetailTable)
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!)!
let scell = currentCell.detailTextLabel!.text!
sstudentname = (currentCell.textLabel?.text)!
}
// - If I comment this section of the code issue goes away.
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
let gradeselected = String(describing: sgrade)
return [gradeselected]
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let myKLVC = segue.destination as! KindergartenLevelViewController
myKLVC.klvstudentname = sstudentname
}
答案 0 :(得分:0)
红色圆圈中的文字显示[1, 2]
,它看起来像可能包含所有等级的数组,而不仅仅是我们在字符串gradeselected
中看到的特定单元格的数组。如果代码中有这样的数组,请查找可能将其转换为字符串并绘制它的位置。也许你在代码的早期迭代中做到了这一点,以确保数组包含你想到的或什么?
Arrays并不是神秘地在屏幕上画画 - 在某个地方,有一些代码会导致这种情况发生。我们无法真正帮助您找到它,因为您还没有显示您的代码,但只知道要查找的内容可能会帮助您自己找到它。
答案 1 :(得分:-2)
您可以通过表格视图的属性indexPathForSelectedRow
查询所选行。
您实施的方法与您在模拟器中看到的完全相同。
请查看文档:
属性indexPathForSelectedRow:https://developer.apple.com/documentation/uikit/uitableview/1615000-indexpathforselectedrow
func sectionIndexTitles:https://developer.apple.com/documentation/uikit/uitableviewdatasource/1614857-sectionindextitles