2017-09-06 3 views
0

2つのViewControllersにはUITextViewを含み、もう1つにUITableViewが含まれています。私は自分のアプリケーションが選択した行のデータをSecondViewControllerからUITableViewをUITextViewに最初のViewControllerに渡すようにしたいと思います。私はfirstViewControllerの下のコードを使用しています(ちょうど私が持っているものは、firstViewController内のUITextViewです。ユーザーはカスタム値を入力するか、longpressgestureを入力してポップオーバーウィンドウを表示するオプションがあります2番目のViewControllerのUITableView。私が達成したいのは、popoverViewを含むpopoverViewからpopoverViewがクローズされ、テーブル内で強調表示された値がfirstViewControllerのUITextViewに表示される行が選択されたときです。選択された行に応じて、UITableViewから別のViewControllerにデータを渡す

とsecondViewControllerに以下のコード:

@objc func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     func prepare(for segue: UIStoryboardSegue, sender: UITableViewCell?) { 

      let toFirstViewController = segue.destination as! ViewController 

      // Pass the selected object to the new view controller. 

      if let indexPath = self.indicativeDesignWorkingLifeTable.indexPathForSelectedRow { 

       let selectedRow = years[indexPath.row] 

       toFirstViewController.textInsideIndicativeDesignWorkingLifeTextView = selectedRow 

      } 

      } 

} 

しかし、私はシミュレータを実行し、テーブルから行を選択すると、何もfirstViewControllerのUITextView内で起こる?すべてのことが起こるのは、firstViewControllerが表示されることです。どんな助けでも大歓迎です。

ありがとう、 Shadi。

+0

なぜ'準備(::送信者用)がありますか? – rmaddy

+1

私は間違った理解を持っているかもしれないので、私はコーディングに新しいです、行がテーブルで強調表示されたら、情報を渡したいですか? –

+0

Fine。しかしもう一度、なぜもう一つのメソッドが別のメソッドの中にあるのですか?それをしないでください。 'prepare(for:sender:)'を他のメソッドの外側に移動します。 – rmaddy

答えて

0

のようにあなたのコードを更新します(:didSelectRowAt:_) `メソッド`のtableView内部 `メソッド

@objc func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     self.performSegue(withIdentifier: "<set identifier String>", sender: indexPath) 

} 


func prepare(for segue: UIStoryboardSegue, sender:Any?) { 

      let toFirstViewController = segue.destination as! ViewController 

      // Pass the selected object to the new view controller. 

      if let indexPath = sender as? IndexPath { 
       print("indexPath - \(indexPath)") 
       let selectedRow = years[indexPath.row] 
       print("selectedRow - \(selectedRow)") 
       toFirstViewController.textInsideIndicativeDesignWorkingLifeTextView = selectedRow 

      } 

} 
+0

クルナルありがとう、私はあなたが前に述べた問題を解決しました。 firstViewController内のUITextView内にプレースホルダテキストを手動で挿入しているので、私のコードを修正しました。これが問題だろうか? –

+0

私はCustomCellをUITableViewの内部で使用しています。 –

+0

segueメソッドで 'selectedRow'を表示してチェックします。選択した行を取得するかどうかを確認します。また、 'indexPath'を出力してください。 – Krunal

関連する問題