質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

解決済

dismiss UINavigationController and pass data

ringotubame
ringotubame

総合スコア21

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

1回答

0評価

0クリップ

1626閲覧

投稿2017/05/13 18:22

編集2017/05/14 02:24

NavigationController に管理されている画面(AddViewController)から NavigationController に管理されていない HomeListViewController に戻るときに値を渡したい。

// ストーリーボードの様子
HomeListViewController → NavigationController → AddViewController

###発生している問題・エラーメッセージ

AddVC の saveBtn を押し homeVC へ戻るときに、home の tableview 更新のための値を渡せない。
いろいろためしたが 遷移先の homeVC がなぜか取得できない。

###該当のソースコード

// HomeListViewController.swift
@IBAction func addNewCell(_ sender: Any) {

// 1. let sb = UIStoryboard(name: "Main", bundle: nil) let navi = sb.instantiateViewController(withIdentifier: "naviToAdd") as! UINavigationController let addVC = navi.topViewController as! AddViewController // 2. データ引き渡し addVC.wordTextFieldStr = "" addVC.bodyStr = "" // 3. 遷移 present(navi, animated: true, completion: nil)

}

// AddViewController.swift
@IBAction func saveBtnTapped(_ sender: Any) {
let fileName = myTextField.text!
let body = myTextView.text!

// ファイル追加、配列を更新 monstersManager.addWord(fileName: fileName, body: body) let navi = self.presentingViewController as! UINavigationController // 落ちない print("presentingViewController は navi : \(navi)") print("navi.parent : \(String(describing: navi.parent))") // nil print("navi.presentingViewController : \(String(describing: navi.presentingViewController))") // nil // var homeVC = UIApplication.shared.keyWindow?.rootViewController as! HomeViewController // ダメ homeVC.isPrevVCAddMode = true dismiss(animated: true, completion: nil)

}

###試したこと

navi.parent
navi.presentingViewController
var homeVC = UIApplication.shared.keyWindow?.rootViewController as! HomeViewController

などで移動先の var homeVC を取得しようと試みるもうまくいかない。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

fuzzball

2017/05/15 02:39

AddViewControllerの中でself.presentingViewControllerがUINavigationControllerになる状況が分かりませんので、もう少し詳しくViewControllerの構成を教えて下さい。HomeListViewControllerはInitial View Controllerではないのでしょうか?
ringotubame

2017/05/15 11:44

→ (navi) → HomeViewController → navi → AddViewController こうでした。(navi)が initial viewcontroller でした。sb みると navigationcontroller がありました。 addVC の保存ボタンを押すと、homeVC にもどり、homeVC の UI(table)を更新するかんじです。
ringotubame

2017/05/16 06:45 編集

navi.presentingViewController これが addvc の左となりの UINavigationController とおもっていたのが間違いだった。navi.presentingViewController で参照してたのはホームの左となりの UINavigationController でした。コンソールに出力してアドレスで確認しました

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。