我的视图控制器中嵌入了一个表格视图,我希望能够根据视图控制器中的哪个单元格设置segues到其他四个视图控制器。
但是,我似乎无法弄清楚如何控制+将segue从表视图拖动到视图控制器。
我相信代码的相关部分将是:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let options = ["Home", "My Account", "Settings", "Support"]
//MARK: Properties
var selectedItem: String?
@IBOutlet weak var nameTextField: UILabel!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath)
cell.textLabel?.text = options[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return options.count
}
//MARK: Actions
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let selectedRow = tableView.cellForRow(at: indexPath){
selectedItem = selectedRow.textLabel?.text
}
if selectedItem == "My Account"{
performSegue(withIdentifier: "classifySegue", sender: self)
} else if selectedItem == "Settings"{
performSegue(withIdentifier: "otherSegue", sender: self)
}
}
}
问题是当前的OtherSegue来自View Controller而不是Table View本身。
答案 0 :(得分:0)
它不需要来自tableView本身。 segue应该来自包含tableView的VC。
自您的
以来,您的代码仍然可以使用performSegue(withIdentifier: "classifySegue", sender: self)
正在调用来自 self 的执行segue,这是您的ViewController
注意:在您的didSelect函数中,您不需要再次获取单元格,只需将selectedItem设置为self.options [indexPath.row] '我只是试图获取你最初在单元格中传递的文本。
答案 1 :(得分:0)
StoryBoard不允许来自tableview的segue因为它不可点击/没有任何动作,所以你可以从tableView Cell中创建segue。