あぷけん!

アプリユーザーと開発者をつなぐメディア

【Xcode】AppDelegateからpresentViewControllerを使って画面推移させる簡単な方法

【Xcode】AppDelegateからpresentViewControllerを使って画面推移させる簡単な方法

こんにちは、あぷけんです。

この間、WatchConnectivityを使ってWatchアプリとiOS親アプリと連動させる仕組みを作っていたときに、仕様なのか何かが間違っていたのかAppDelegate以外の所でWatchからの情報を受け取るための「didReceiveApplicationContext」メゾットが反応しなくなってしまったので仕方なく唯一このメゾッドに反応してくれるAppDelegate内だけで情報受信からpresentViewControllerで画面推移させる処理を完結させようと思いました。

しかし当然、AppDelegateから直接pushやmodalなどで画面推移させることはできないので今回は、既存ViewControllerのメゾッドを呼び出さずにAppDelegate内だけでpresentViewControllerを使った画面推移を考えてみました。

スポンサーリンク

AppDelegateで行う画面推移までの流れ

WatchからiPhoneへデータ送信

WatchとiPhone間のやりとりの方法としてはWatchConnectivityのupdateApplicationContextを使うことにしました。

Watch側のInterfaceController.mでは下記のようにしました。
updateApplicationContextでApplicationContextを更新しています。

iPhoneでデータを受け取る

本来はAppDelegate以外でも情報は受け取れるはずなのですが受け取れないのでAppDegateで情報を受け取ってみます。

AppDelegateからpresentViewControllerで画面を推移させる

AppDelegateでRootビューを呼び出し、そのRootビューでpresentViewControllerを呼べないかと思ったら意外と簡単にできました。

これを”#define ROOTVIEW”とし、defineしたROOTVIEWをpresentViewControllerで他のViewControllerを表示させます。

これでWatchとの通信でスムーズに画面推移させることができました。

最後まで読んでいただきありがとうございます。
ではまた次回。

LEAVE A REPLY

*
*
* (公開されません)

COMMENT ON FACEBOOK

Return Top