2016-07-17 11 views
1

UITableViewControllerUITableViewCellとCellのXIBファイルがあります。UITableViewCellの@IBAction関数でViewControllerをプッシュする方法

私の質問はセルからUIViewControllerをプッシュする方法です。

in UITableViewCell。

@IBAction func pushBtnTapped(sender: AnyObject) { 
     // navigate to post view controller 
     let guest = self.storyboard?.instantiateViewControllerWithIdentifier("GuestCollectionVC") as! GuestCollectionVC 
     self.navigationController?.pushViewController(guest, animated: true) 
} 

エラーメッセージが表示されます。 self.storyboardはUITableCellのメンバーではありません。

  • これを実装する別の方法があります。しかし、私はTableViewCellで実装する必要があります。
+0

あなたのセルにメンバーとしてストーリーボードがあるかどうかを確認しますか? –

+0

いいえ、私はSlackTextViewControllerを使っています...だから、コードを使ってテーブルのセルを追加しました:)返信ありがとう! –

答えて

1

理想的には、didSelectRowAtIndexPathメソッド呼び出しでテーブルビューコントローラからプッシュします。なぜそれをセルに実装しなければならないと言いますか?しかし、あなたはこれがベストショットかもしれないと言っているのかから、あなたがそれを行うことができ、他の方法が

self.performSegueWithIdentifier("YourSegueId", sender: nil) 

が続いprepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

//get the index path of the selected row 
let indexPath = self.tableView.indexPathForSelectedRow 

//just an example if you want to pass something to the other vc 
let item = self.responseItems[indexPath!.row] 

if segue.identifier == "YourSegueId" { 

     YourVC = segue.destinationViewController as! YourVC 

     YourVC.item = item 
} 
} 

にあなたがボタンからそれを実行したい場合は...ありますprepareForSegueメソッドでこれを行うことができます...ボタンとそのインデックスパスを持っています

let button = sender as! UIButton 
    let view = button.superview 
    let cell = view?.superview as! YourCell 
    let indexPath = tableView.indexPathForCell(cell) 
+0

明日の返信ありがとう私はあなたの助言をしようと明日に戻ってきます。私は本当にあなたに感謝しています。 –

+0

私は3つのファイルを持っています:1. TableViewController、2. TableViewCell、3. TableViewCell.xibと....ボタン@IBActionはxibファイルにあります...あなたのコードはどこに置かれていますか?ありがとう –

関連する問題