Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。310件1swiftでsegueの遷移時の処理で分からないので分かる方教えて下さい。segueをIBを使うのではなくidentifierを設定してプログラムで使います。2つの画面ViewControllerとPuzzleViewControllerがありperformSegueWithIdentifierを使って遷移させます。遷移方法は画像を作成してそちらからonClickButtonのアクションで移動します。TouchUpInsideする画像によって次の画面でのアクションが異なるため画像を設置した際にtag(cTag)を設定します。そこで質問ですがprepareFoSegueメソッド内にsender?.tagを設定したのですがなぜかnilが返ってきます。senderの型をUIButtonに「決めつけ」る。Bindingを採用。}メソッドの引数で、senderの型をAnyObjectとしていることに注目してください。AnyObjectにtagというプロパティはありませんので、sender.tagは意味をなしません。tagというプロパティを持っているのは、UIViewとそのサブクラス(UIButtonも含まれる)なので、senderをUIViewないしUIButtonにダウンキャストする必要があります。UIButton)は、直接引数の型を変更しています。Bindingを使ってダウンキャストしています。ダウンキャストに失敗すると、theButtonには、nilが入ります。※メソッド・関数の引数に限らず、AnyやAnyObjectという型が出てきたら、なんらかのダウンキャストが必要なんだろうなと、予測しておくといいでしょう。配列Arrayや辞書Dictionaryの要素を、AnyObject型としておくことはよくあります。要素を取り出したときに、ダウンキャストしないと、そのままでは使えないことがよくあります。個の銅バッジ回答ありがとうございます。わたりやすい解説でした。tagのサブクラスについて理解してなかったので大変勉強になりました。試してみましたがうまくいきました。本当にありがとうございました。4:08『AnyObjectにtagというプロパティはありませんので、sender.tagは意味をなしません。tagというプロパティを持っているのは、UIViewとそのサブクラス(UIButtonも含まれる)なので、senderをUIViewないしUIButtonにダウンキャストする必要があります。おっしゃっていることがよくわかりません。部分は同じように書くと思います。私が特に気になったのは、『sender.tagは意味をなしません。書き換えられているところです。元のコードのままでも質問者様の意図通りに動作すると思いますし、根本的な問題の解決には関係ないと思うのですが、なぜ書き換えられたのでしょうか。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。Segueをプログラムで実行するには?1storyboardの遷移でエラーが出ます。(segueを使用しない方法で実装)0segueを使用した画面遷移が遷移するたびに重くなります。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。