我在选择一行后尝试推送一个segue。我已经通过各种方式尝试了其他人的问题,但我没有在哪里。 这是我的代码:
import UIKit
import CoreData
class RoutineViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableview: UITableView! {
didSet {
tableview.dataSource = self
}
}
var routines: [NSManagedObject] = []
var stringToPass:String!
override func viewDidLoad() {
super.viewDidLoad()
tableview.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Routine")
do {
routines = try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return routines.count
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableview.cellForRow(at: indexPath)
tableview.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "R2", sender: cell)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "R2" {
self.performSegue(withIdentifier: "R2", sender: self)
}
}
我确实有表工作和一切,有一个保存功能,删除功能,它取出和更新我只是无法让它转到另一个视图控制器。 segue标识符称为“R2”。
答案 0 :(得分:1)
您尚未将tableview.delegate
设置为self
。
tableView(_:didSelectRowAt)
是Table View Delegate
方法。在某个地方设置了viewDidLoad
。
override func viewDidLoad() {
...
tableview.delegate = self
...
}
答案 1 :(得分:0)
尝试更改为:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableview.cellForRow(at: indexPath)
tableview.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "R2", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "R2" {
}
}
答案 2 :(得分:0)
监控 UITableView 中的任何活动,将委托作为自己。
@IBOutlet weak var tableview: UITableView! {
didSet {
tableview.dataSource = self
tableview.delegate = self
}
}