2016-10-30 26 views
0

今のところ、Swiftについて私が理解していることは、ある視点から別の視点へと移行するためには、それを使う方法がセグを使用しているということです。しかし、私のアプリでは、ユーザーがそれとやり取りできるアイテムのリストを表示するテーブルビューを持っています。そうすることで、タブバー内に含まれる、アプリケーション内の別のビューコントローラーにアイテムが移動します。テーブルビューコントローラからタブビュー内の別のビューコントローラにデータを渡す?

class JobCompletedTableViewController: UITableViewController { 

    // MARK: Properties 
    var jobsCompleted = [Job]() 
    var jobsChosen = [Job]() 

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 
let share = UITableViewRowAction(style: .normal, title: "Share") { action, index in 
      // Add data to the array created locally 
      self.jobsChosen.append(self.jobsCompleted[indexPath.row]) 
     } 

     share.backgroundColor = UIColor.blue 

     return [share] 
    } 
    // Need some sort of method to pass data into other view 
    //controller if tab button is clicked 
} 

ナビゲーションコントローラとタブバービューコントローラに埋め込まれたテーブルビュー。

class ChosenTableViewController: UITableViewController { 

    // MARK: Properties 
    var jobsChosen = [Job]() 

    // Upon initalization of this view, this array should be populated with data passed from the above view controller 
} 

この問題の最初の考えは、リスト・アイテムとのユーザーのやりとりを追跡する配列をビュー・コントローラーに作成することでした。次に、ユーザーがインタラクトしたアイテムを配列に追加します。ユーザーがタブバー内の項目をクリックすると、ユーザーが操作したすべての項目を示す別の表ビュー・コントローラーをインスタンス化します。

ユーザーが実際にやり取りするアイテムのリストを保持するChosenTableViewControllerクラスのインスタンスを実際にインスタンス化する方法については、わかります。

ストーリーボードは、私のアプリが好きで、どのように見えるかのアイデアを与えるためにそれに含まれる enter image description here

+0

そのあなたがあなたの図に基づいてを参照のコントローラを表示している不明確。紹介の準備から仕事のVCに行くことを試みていますか?準備リストをジョブリストに追加しますか?このことはローカルで持続しているのか、ネットワークから引き離しているのでしょうか? – JustinM

+0

ああ、私はappologize、私は下のタブをタップしてジョブVCから電子メールVCにしようとしています。データはローカルに保存されます。明確にするために編集します –

+0

これは、現在使用しているコアデータ、レルムまたはその他の永続メソッドを使用し、Boolプロパティをデフォルト値のJob Typeに追加することですfalse(例:var selected = false)。ユーザーが行を選択するたびに、選択したプロパティの値を変更して新しい選択を保持します。その後、電子メールvcに行くと、選択された値== trueのすべてのジョブが取得されます。これにより、vcからvcへ渡すデータが削除されます。私は答えを書くだろうが、私はコードの完全な例を与えることはできません。これは、実装の途中で開始することができます – JustinM

答えて

1

彼らは永続化する必要がないので、最も簡単な解決策は、選択保持するシングルトンを使用することです表示されたときに電子メールVCから取得できるアレイ内のジョブ。そして、電子メールのVCで

final class SelectedJobs { 

static let shared = SelectedJobs() 

var jobsArray = [Job]() 
} 

class EmailVC: UIViewController { 
    var selectedJobs = [Job]() 

    override func viewWillApear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

     for job in SelectedJobs.shared.jobsArray { 
     selectedJobs.append(job) 
     } 

     self.tableView.reloadData() 
    } 

} 
関連する問題