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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

738閲覧

swiftのviewcontroller間での変数共有について

ShuyaOgawa

総合スコア17

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2017/11/20 07:59

編集2017/11/20 08:00

FirstViewCOntrollerのボタンアクション時に変数を受け取り、delegateを利用してSecondViewControllerでその値を受け取りたいのですが、うまくいきません。変数はmy_idです。
そのコードは下に示します。

<AppDelegate.swift>

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow? var my_id: AnyObject?

〜〜省略〜〜

<FirstViewController>

class FirstViewController: UIViewController {

var appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate

〜〜省略〜〜

@IBAction func StartButton(_ sender: UIButton) {

〜〜省略〜〜

self.appDelegate.my_id = all_member_array?.count as AnyObject

〜〜省略〜〜

<SecondViewController>

class SecondViewController: UIViewController {

var appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate

override func viewDidLoad() {
super.viewDidLoad()

print(self.appDelegate.my_id)

〜〜省略〜〜

SecondViewControllerのprintによる結果はnilで返されてしまい、FirstViewControllerでの変数が受け取れませんでした。FirstViewControllerで代入した変数を受け取れる解決策がありましたらよろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/11/20 08:02

FirstViewControllerでmy_idをセットしているところの後にも print(self.appDelegate.my_id) を追加して出力を確認して下さい。
ShuyaOgawa

2017/11/20 08:08

ご返信ありがとうございます。試しましたところ、buttonアクションで受け取った値が出力されました。
fuzzball

2017/11/20 08:17 編集

FirstViewControllerのprintの後で、SecondViewControllerのprintが出力されていますか?また、どのような方法で遷移はしているでしょうか?
ShuyaOgawa

2017/11/20 08:32

恥ずかしながら先にSecondViewControllerのprint文が来ていました。遷移方法はPresent Modally segueを使ってボタンを押した後にSecondViewControllerに遷移しています。この遷移方法に間違いがあるのでしょうか。
guest

回答1

0

ベストアンサー

セグエをManualにして、ボタンアクションの中で遷移して下さい。
Manualセグエをコードから発動させるには performSegue(withIdentifier:sender:) を使います。

投稿2017/11/20 08:35

編集2017/11/20 08:52
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShuyaOgawa

2017/11/20 08:58

ありがとうございます。 勉強させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問