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

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

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

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

Swift

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

Q&A

2回答

5014閲覧

swift モーダル表示のcloseボタンが動かない。

aild_arch_bfmv

総合スコア11

iOS

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

Swift

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

0グッド

0クリップ

投稿2015/11/10 01:00

編集2015/11/10 02:04

###前提・実現したいこと
swiftでモーダルを表示させるのですが、
そのモーダルを閉じるボタンがクリックしても、閉じることができません。そのモーダルを閉じることが目標です。

###発生している問題・エラーメッセージ
エラーメッセージは表示されません。モーダルは表示されます。
以下closeModalのprintlnは出力されません。

###ソースコード

swift

1import UIKit 2 3 4class ModalViewController : UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 self.view.backgroundColor = UIColor.rgb(r: 0, g: 0, b: 0, alpha: 0.5) 10 11 let modal_view = UILabel(frame: CGRectMake(0, 0, 300, 300)) 12 modal_view.backgroundColor = UIColor.whiteColor() 13 modal_view.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height / 2) 14 self.view.addSubview(modal_view) 15 16 let close_button = UIButton(frame: CGRectMake(0, 0, 250, 50)) 17 close_button.layer.borderColor = UIColor.grayColor().CGColor 18 close_button.layer.borderWidth = 3 19 close_button.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height / 2 + 100) 20 close_button.setTitle("もどる", forState: .Normal) 21 close_button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Normal) 22 close_button.tag = 5 23 close_button.addTarget(self, action: "closeModal:", forControlEvents: .TouchUpInside) 24 self.view.addSubview(close_button) 25 } 26 27 /* 28 Buttonを押した時に呼ばれるメソッド. 29 */ 30 func closeModal(sender: AnyObject) { 31 println("きてる") 32 self.dismissViewControllerAnimated(true, completion: nil) 33 } 34}

swift

1 // 動画が終了したときに呼ばれる関数 2 func playerItemEnd(notification: NSNotification){ 3 videoPlayer.pause() 4 println("全ての動画が終了") 5 // secondViewControllerのインスタンス生成. 6 let Modal = ModalViewController() 7 8 // モーダルをフェードインさせる 9 Modal.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve 10 // bootstrapのモーダルっぽくする 11 Modal.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext 12 13 self.presentViewController(Modal, animated: true, completion: nil) 14 } 15

###補足情報(言語/FW/ツール等のバージョンなど)

xcode6.4

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

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

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

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

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

guest

回答2

0

私もコピペしてXcode7.1でビルドして動かしてみましたが、

println()はXcode7(Swift2.0)から廃止されたため、print()に変更
→Xcode6.4であればprintln()で問題ありません。

UIColor.rgb()というメソッドは存在しないため、UIColor(red:0, green:0, blue:0, alpha:0.5)に変更
→たぶん、extensionを使ってrgb()メソッドを独自追加したのですよね?

の2つを修正したら、問題なく動作しました。

コードに問題はありそうに思えないので、修正したコードが正しく実行アプリに
反映されていないのではないかという観点で疑った方がよさそうに思います。

  • 一度アプリを削除してから再度実行してみる
  • 一度[Product]-[Clean]でプロジェクトをクリーニングしてから再度ビルドしてみる
  • 問題なく動作している部分(例えばclose_buttonのタイトル文字)をあえて変更してみて、その変更をちゃんと反映して動作しているか確認してみる。

といったようなことを試してみると、なにか気づくことがあるかもしれません。

投稿2015/11/10 08:11

編集2015/11/10 08:23
TakeOne

総合スコア6299

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

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

aild_arch_bfmv

2015/11/10 10:15

・swift1.2を使っております。 ・UIColorはextensionを使っております。 よくわからないので、一度アプリを削除して再度やってみます!ありがとうございます!
guest

0

上記ソースをコピペして正常に動作しています。
(「もどる」を押すとModalViewControllerが閉じる)

上記質問のソースはコピペしたものでしょうか?
手打ちしたのであれば、

swift

1close_button.addTarget(self, action: "closeModal:", forControlEvents: .TouchUpInside)

これの"closeModal:"のコロンが抜けていないか確認して下さい。

あと、ModalViewControllerを呼び出しているコードも書いて下さい。

投稿2015/11/10 02:00

fuzzball

総合スコア16731

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

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

aild_arch_bfmv

2015/11/10 02:05

上記のコードはコピペしております。 コロンは抜けておりません。 また、呼び出しているコードも貼り付けさせていただきました。 こちらもコピペです。
fuzzball

2015/11/10 02:24

こちらでは正常に動作しているので、これ以上はお役に立てそうにないです。
aild_arch_bfmv

2015/11/10 07:23

左様でございますか。。。ご協力ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問