【发布时间】:2015-05-18 05:06:20
【问题描述】:
我以前曾经问过这个问题,但是我觉得我还没有做到彻底。我试图以编程方式完成一个非常标准的向下钻取表视图层次结构,而不是使用 IB 来避免不必要的混乱,因为我有超过 40 个不同的视图要实现。我决定使用以下 switch 语句:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var VC: UITableViewController
switch indexPath.row {
case 0: VC = SecondTableViewController()
default: ()
}
navigationController?.pushViewController(VC, animated: true)
}
如您所见,它给了我未初始化的错误,因此我继续使我的变量成为解决此问题的可选变量,并且它可以编译并运行:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var VC: UITableViewController?
switch indexPath.row {
case 0: VC = SecondTableViewController()
default: ()
}
navigationController?.pushViewController(VC!, animated: true)
}
但是,当我选择指定的行(在调试器下运行后值为 0 时正确)时,它会因以下错误而崩溃:
似乎是什么问题?它是我开关中的默认语句吗?还是我的“pushViewController”方法中的变量?我可以补充一下,当我从“VC/VC!”更改此方法中的参数时像这样的“UITableViewController()”:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var VC: UITableViewController?
switch indexPath.row {
case 0: VC = SecondTableViewController()
default: ()
}
navigationController?.pushViewController(UITableViewController, animated: true)
}
它相应地运行 & 运行,但是当视图被推送时,它不是我在我的 switch 语句中指定的 TableViewController,而只是一个空白的表视图。我错过了什么?
这是我的 SecondTableViewController 的代码:
导入 UIKit
类 SecondTableViewController: UITableViewController {
var myVariable = ["LIST OF STRINGS IN AN ARRAY"]
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myVariable.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell
var superVariable = myVariable [indexPath.row]
cell.textLabel!.text = superVariable
return cell
}
}
【问题讨论】:
标签: ios uitableview swift xcode6 switch-statement