2017-10-28 13 views
-1

"Comment"というUIButtonを持つユーザー投稿のリストを持つPostsTableViewというテーブルビューがあります。ユーザーが「コメント」をクリックすると、postTextや投稿を書いたユーザーなど、その投稿の周りのすべての情報を持つCommentViewControllerにリダイレクトします。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

seguesを使用しているあなたと仮定すると、あなたはPostsTableViewController

に変数を追加することにより、 .performSegue(withIdentifier: "mySegueIdentifier", sender: self)

あなたはpostInfo最初に保存することができ呼び出します。その後、

そしてcommentTapped(postInfo: String)

func commentTapped(postInfo: String) { 
    selectedPostInfo = postInfo 

    performSegue(withIdentifier: "mySegueIdentifier") 
} 

でそれを設定すると、今すぐcontroller.prepare(for: UIStoryboardSegue, sender: Any?)を無効にしてCommentViewControllerに値を設定します。

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

あなたはこの

1のような何かを行うことができます)すべてのリファクタリングFIRSTOFデリゲートメソッドは、文字列ではなく引数としてポストオブジェクトを取得します(これは、fの必要がないため、より良いユーザーエクスペリエンスを提供するのに役立ちますその時点でローカルに既に利用可能なエッチデータ)。この

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

2のようなもの)さて、あなたは、私がコード

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 
} 
以下のように初期化することができ、ポストを言わせCommentsViewControllerでプロパティを作成します
関連する問題