问题描述
我已经按照 Codelines 将数据插入到 Tableview。
问题是我可以在这里使用 segle / perfornsegue。
但是由于我还是个初学者,我找不到解决调用第二个控制器的问题。
import UIKit
import FirebaseFirestore
@objc class PostTableViewDataSource: NSObject,UITableViewDataSource,UITableViewDelegate {
private let posts: LocalCollection<Post>
public init(posts: LocalCollection<Post>) {
self.posts = posts
}
public convenience init(query: Query,updateHandler: @escaping ([DocumentChange]) -> ()) {
let collection = LocalCollection<Post>(query: query,updateHandler: updateHandler)
self.init(posts: collection)
}
public func startUpdates() {
posts.listen()
}
public func stopUpdates() {
posts.stopListening()
}
subscript(index: Int) -> Post {
return posts[index]
}
public var count: Int {
return posts.count
}
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return count
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: Constants.TableView.postTableViewCell,for: indexPath as IndexPath) as! PostTableViewCell
let post = posts[indexPath.row]
cell.commentButton.addTarget(self,action: #selector(tapped),for: .touchUpInside)
//cell.button.addTarget(self,for: .touchUpInside)
cell.populate(post: post)
return cell
}
@objc func tapped() {
print("Print User touch Button")
// Jump here to the second Controller
}
解决方法
您需要使用函数 prepare(for:)
并在 tapped()
中准备转场
使用 ID performSegue()
如何在tableViewCell中执行segue https://www.codingexplorer.com/segue-uitableviewcell-taps-swift/
Segue 中的更多资源 :)
https://www.hackingwithswift.com/example-code/uikit/what-is-a-segue https://www.hackingwithswift.com/example-code/uikit/how-to-perform-a-segue-programmatically-using-performsegue