42
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Swift] 画面遷移から戻ってきた時に処理を実行する方法

Last updated at Posted at 2016-02-12

#目的
A: TitleTableViewController: UITableViewController

  • データベースから値を読み込み表示する

B: AddSearchViewController: UIViewController

  • データベースの値を書き換える
  • StoryBoard ID: AddSearchView

AからBに転移して、BでAのテーブルの内容が変化する処理を行った後、BからAに戻っても、テーブルの内容が更新されないという問題があった。
それのような問題を解決する方法を紹介

#解決方法

まずAに、以下のコードを追加

import UIKit

protocol TitleTableViewControllerDelegate {
    func updateTableView()
}

// TitleTableViewControllerDelegateを追加する時、updateTableView()が書かれていないので最初エラーが出ます
class TitleTableViewController: UITableViewController, TitleTableViewControllerDelegate  {

   // ...途中省略

// Bに転移する処理(実際はButtonをタップした時であった)
func toB() {

    let addSearchViewController = self.storyboard?.instantiateViewControllerWithIdentifier("AddSearchView") as! AddSearchViewController
    // まだ、Bに処理を書いていないので最初はエラーが出る
    addSearchViewController.titleTableViewDelegate = self
    self.presentViewController(addSearchViewController, animated: true, completion: nil)
}

func updateTableView() {
        
     // 各セルの内容の要素を作る処理(今回は、データベースから値を読み込み配列に格納)
     setUp()
     // 再描画
     self.tableView.reloadData()

}

func setUp() {

     // データベースから値を読み込み配列に格納
     // 処理省略
}

続いてBに追加


import UIKit

class AddSearchViewController: UIViewController {
    
    var titleTableViewDelegate: TitleTableViewControllerDelegate!

    // ...途中省略

// Aに転移する処理(実際はButtonをタップした時であった)
func toA() {

    self.dismissViewControllerAnimated(true, completion: {
        // ここを記述することでAのエラーが消える
        self.titleTableViewDelegate.updateTableView()
    })
}

これでBを閉じた時AのupdateTableView()の処理が行われる

正しいやり方かどうかわからないが...

42
40
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?