2017-10-28 460 views
-1

我有一個名爲PostsTableView的tableview,它有一個名爲「Comment」的UIButton的用戶帖子列表。當用戶點擊評論時,我希望它重定向到包含帖子周圍所有信息的CommentViewController,例如postText和寫帖子的用戶。在Swift和Firebase中使用協議在UITableview中傳遞數據

下面的代碼片段。

PostsTableView

extension PostsTableViewController: PostsTableViewCellDelegate { 

    func commentTapped(postInfo: String) { 

    //How do I pass postInfo along to CommentViewController 

    } 

PostsTableViewCell

protocol TableViewCellDelegate { 

    func commentTapped(postInfo: String) 

} 

class PostsTableViewCell: UITableViewCell { 

@IBOutlet weak var postTextLabel: UILabel! 
@IBOutlet weak var postUserLabel: UILabel! 

var postItem: Post! 
var delegate: TableViewCellDelegate? 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

@IBAction func commentAction(_ sender: Any) { 

delegate?.commentTapped(postInfo: postItem.postText) 

} 
} 

回答

0

假設你正在使用塞格斯,你會打電話給.performSegue(withIdentifier: "mySegueIdentifier", sender: self)

您可以存儲postInfo先加入一個變量來PostsTableViewController

var selectedPostInfo: String? 

然後將其設置在commentTapped(postInfo: String)

func commentTapped(postInfo: String) { 
    selectedPostInfo = postInfo 

    performSegue(withIdentifier: "mySegueIdentifier") 
} 

現在覆蓋controller.prepare(for: UIStoryboardSegue, sender: Any?)並設置CommentViewController值:Firstof所有重構

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let controller = segue.destination as? CommentViewController { 
     controller.postInfo = selectedPostInfo 
    } 
} 
0

你可以做這樣的事情

1)委託方法將post對象作爲參數而不僅僅是String(這有助於提供更好的用戶體驗,因爲不需要f刻蝕當時已有的本地數據)。這樣

func commentTapped(postObject: Post) { // I am assuming your Post model has got all the info required by the CommentsViewController 
    } 

2什麼的)現在創建CommentsViewController屬性假設後,你我可以初始化如下面的代碼

func commentTapped(postObject: Post) { 
let commentVC = CommentsViewController.initWithNib... // Initialise the Comments ViewController 
commentVC.post = postObject // Assign the post object here 
show(commentVC) // Present here the commentVC as per your requirement of Modal or Push 
}