2016-07-25 17 views
0

私はそれをタップすると、tableViewCellのテキストに従って別のviewControllerにユーザーを送ることができるように、各tableViewCellにUIButtonを追加しました。私は既にviewManager間で値を渡すためにsharedManagerと共にsingleTonを使いました。そして、私は各tableViewcellの関数 "setSelected"内のタイトルを設定しました。別のviewcontrollerの値をtableviewcellに渡す

override func setSelected(selected: Bool, animated: Bool) { 
SharingManager.sharedInstance.selectedCollege = self.CollegeLabel.text! 

} 

そして私は「selectedCollege」の値をフェッチし、異なるのUIViewControllerにタイトルを設定します。

override func viewDidAppear(animated: Bool) { 

self.title = SharingManager.sharedInstance.selectedCollege 
} 

ただし、表題が必ずしもtableViewCellのテキストと一致するわけではないため、タイトルは正しく設定されません。

+0

各セルにタグを追加します。今すぐセルを押すとタグを取得し、どのボタンを押したか知っているでしょう –

+0

ボタンタップで 'setSelected'が呼び出されていないようです。確認するためにその方法でプリントを追加できますか? –

+0

@PhillipMills私はやったし、すべてのtableViewCellsのテキストを印刷します。なぜこれが起こると思いますか? –

答えて

0

なぜSharingManagerを使用しますか? ViewController間でデータを渡す場合は、prepareForSegueメソッドを使用できます。

  1. はあなたのビューコントローラ
  2. にインスタンス変数「titleOfSelectedRow」を追加performSegueWithIdentifier方法と保存先ビュー・コントローラにソース・ビュー・コントローラからセグエを作成し、ボタンアクションの呼び出しでは、識別子
  3. を設定titleOfSelectedRowメソッドの選択された行のタイトル
  4. は、prepareForSegueメソッドをオーバーライドします。このメソッドでは、destinationViewControllerにアクセスし、titleOfSelectedRow変数の値にタイトルを設定できます。
+0

複雑な理由から、2つのviewController間でsegueを使用することはできません。 –

+0

このためにセグを使用できるはずです。複雑すぎると思われる場合は、アプローチを再評価する必要があります – markedwardmurray

0

prepareForSegueメソッドを使用してください。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let cntrl = segue.destinationViewController as? SecondViewController { 
     cntrl.publicVar = 'your value' 
    } 
} 

またuはindexOfの選択を取得できるのtableView行:ストーリーボード 2)で 1)を設定しセグエは、このような何かをしてください。例:

let selectedIndex : NSIndexPath = self.tableView.indexPathForSelectedRow 

もう一つの方法 - ストーリーボードIDでのViewController initとあなたはあなたの必要性

を達成するために、このような何かを行うことができ

0

pressent関数を呼び出すには、設定したいビューコントローラで変数を作成します。タイトル

ボタンをクリックしたときに、今
class SecondVC: UIViewController { 

//MARK: - Variables 

var title : String = "" 
....... 

override func setSelected(selected: Bool, animated: Bool) { 
    let title = self.CollegeLabel.text! 
    let secondVC = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as! GSMenuCategoryPriceVC 

    secondVC.title = title 
    self.navigationController?.pushViewController(secondVC, animated: true) 
} 
関連する問題