前提・実現したいこと
当方swiftに関しては初心者です。
UINavigationViewを用いたプロジェクトで、Twitterクライアントを開発しています。
投稿用画面をモーダルで表示し、投稿が完了したら同時に前画面のタイムラインを更新させたいと思っています。
しかし、同じようなことをここで試そうとしている方がいて、NavigationControllerを利用しているとうまくいかない、という旨が記述された質問を見つけました。
私も上記記事を参考に下記コードを試したのですが、やっぱりNavigationControllerを介しているため、更新処理がうまくできません。
でもやっぱり、NavigationControllerを利用した状態で、実現したいことができないか?とあれこれ試してみたのですが、どうもうまくいきません。
発生している問題・エラーメッセージ
NavigationControllerを利用した状態でモーダルを閉じた時に同時に更新をかけたいが、うまくいかない
該当のソースコード
swift
1 private func postTweet(userID: String, postContent: String?) { 2 // FIXME : こいつから成功か失敗かを返した方がいい 3 TwitterAPI.postTweet(userId: userID, postContent: postContent!) 4 5 guard let parent = storyboard?.instantiateViewController(withIdentifier: "TimelineViewController") as? TimelineViewController else { 6 fatalError() 7 } 8 print(parent) 9 10 // 呟いたら消す 11 navigationController?.popViewController(animated: true) 12 self.dismiss(animated: true, completion: nil) 13 }
この他、下記も試しました。(質問に載っている方法です)
swift
1 override func viewWillAppear(_ animated: Bool) { 2 super.viewWillAppear(animated) 3 if let presented = self.presentedViewController { 4 if type(of: presented) == TwitterPostViewController.self { 5 //PopupViewControllerから戻ってきたときはrefresh() 6 self.loadTweets() 7 } 8 } 9 }
試したこと
上記の通り
補足情報(FW/ツールのバージョンなど)
xcode version :11.1
target:iOS13.0
swift version:4
テスト端末:iPhone8(実機)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。