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

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

ただいまの
回答率

89.21%

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,769

aild_arch_bfmv

score 11

前提・実現したいこと

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


発生している問題・エラーメッセージ

エラーメッセージは表示されません。モーダルは表示されます。
以下closeModalのprintlnは出力されません。


ソースコード

import UIKit


class ModalViewController : UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = UIColor.rgb(r: 0, g: 0, b: 0, alpha: 0.5)
        
        let modal_view = UILabel(frame: CGRectMake(0, 0, 300, 300))
        modal_view.backgroundColor = UIColor.whiteColor()
        modal_view.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height / 2)
        self.view.addSubview(modal_view)
        
        let close_button = UIButton(frame: CGRectMake(0, 0, 250, 50))
        close_button.layer.borderColor = UIColor.grayColor().CGColor
        close_button.layer.borderWidth = 3
        close_button.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.height / 2 + 100)
        close_button.setTitle("もどる", forState: .Normal)
        close_button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Normal)
        close_button.tag = 5
        close_button.addTarget(self, action: "closeModal:", forControlEvents: .TouchUpInside)
        self.view.addSubview(close_button)
    }
    
    /*
    Buttonを押した時に呼ばれるメソッド.
    */
    func closeModal(sender: AnyObject) {
        println("きてる")
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}

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

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


xcode6.4
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

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

上記質問のソースはコピペしたものでしょうか?
手打ちしたのであれば、
close_button.addTarget(self, action: "closeModal:", forControlEvents: .TouchUpInside)
これの"closeModal:"のコロンが抜けていないか確認して下さい。

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/10 11:05

    上記のコードはコピペしております。
    コロンは抜けておりません。

    また、呼び出しているコードも貼り付けさせていただきました。
    こちらもコピペです。

    キャンセル

  • 2015/11/10 11:24

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

    キャンセル

  • 2015/11/10 16:23

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

    キャンセル

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 19:15

    ・swift1.2を使っております。
    ・UIColorはextensionを使っております。

    よくわからないので、一度アプリを削除して再度やってみます!ありがとうございます!

    キャンセル

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

  • ただいまの回答率 89.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる