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

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

ただいまの
回答率

88.09%

Ctrl + ドラッグでオブジェクトをViewControllerクラスへ紐付けができません?でした。どなたかご助言いただけないでしょうか?

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,541

score 113

swiftでアプリを作っております。

初期の段階で、現在、以下のようなstoryboardがあります。
・Main.storyboard
・listViewController.storyboard

Main.storyboardの中はデフォルトの状態で、最初からあるViewController.swiftのファイルを参照されております。

そのViewController.swiftでは、コードでレイアウトを生成しております。

今回やりたいこととしましては、ViewController.swiftから、listViewController.storyboardに遷移できることです。

storyboardの作成方法は以下を参照しました。
http://dev.classmethod.jp/smartphone/iphone/remind-storyboard/

※できれば、segueを使わず、一画面毎に一つのstoryboardを作りたいです。

以下のコードでいうと

viewDidLoadの中に、Ctrl + ドラッグでボタンオブジェクトをlistViewControllerクラスへ紐付けようとしました。

しかし、ひも付けができませんでした。
(青い線みたいなのが伸びて、ひも付きそうだったのですが、viewDidLoadの中でコードが生成されませんでした。)

import Foundation
import UIKit

class listViewController: UIViewController {

    override func viewDidLoad() {

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

//    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
//        return 1
//    }

}

何か、操作を誤ってしまったのでしょうか?

エラーが出力されるわけではありませんため、よくわかりませんでした・・・。

曖昧な感じで申し訳ありませんが、
宜しくお願いします。

当該storyboardのキャプチャ

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

checkベストアンサー

+1

エラーがでるとパニックになってどうすればいいのかわからなくなりますよね。。
一つずつ潰していきましょう(・∀・)

継承を間違っている可能性がありますね。。
qaz3330さんが上げていただいたコードはUIViewControllerを継承したlistViewControllerクラスを作っています。
しかし、storyboardでのキャプチャを見た限り、UITableViewControllerを継承したListViewControllerを指定しています。

残念ながら継承しているViewControllerが違います。('UIViewController'と'UITableViewController')
名前も違います('listViewController'と'ListViewController')(Swiftは大文字小文字区別します。)

Storyboardに合わせるならコードをいかに変えればエラーはなくなると思います。
下記のコードは'UITableViewController'を継承した'ListViewController'クラスを作っています。

import Foundation
import UIKit

class ListViewController: UITableViewController {

    override func viewDidLoad() {

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

//    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
//        return 1
//    }

}

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/01/23 11:55

    ご回答ありがとうございます。
    ご指摘頂いた内容で解決しました。
    焦ってしまって、気が付きませんでした。
    第三者からのご意見大変参考になります!

    キャンセル

+1

Storyboard側のViewControllerのクラスがlistViewControllerに設定されていないか間違っているんじゃないでしょうか?
ViewControllerのクラスと接続しようとしているソースコードのクラスが一致か継承関係にないとコードが生成されません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/01/11 01:55

    早速ご回答いただき有難う御座います。
    質問文、最後にキャプチャを追加しました。

    >Storyboard側のViewControllerのクラスがlistViewControllerに設定されていないか間違っているんじゃないでしょうか?


    Identity and Type という所と、Custom Class という所にはlistViewControllerを指定しております。

    こことはまた別の所で指定しなくてはいけないということでしょうか?

    キャンセル

  • 2016/01/11 02:17

    Custom Class > Classがちゃんと設定されていれば問題ないですよ。
    質問で書かれているソースコードなどはすべて"list"ですが、キャプチャのClassでは"List"と頭が異なっています。実際のクラス名とは一致していますか?

    キャンセル

  • 2016/01/11 17:27 編集

    有難う御座います。
    ご指摘の通りにやると上手くできました。


    ただ、もう一点追加で恐縮ですが、画面遷移を行った際に、エラーが出てしまいました。


    ```
    Unknown class LlistViewController in Interface Builder file.
    Could not cast value of type 'UITableViewController' (0x1082ed7f8) to 'ListViewController' (0x1051a7f40).
    ```

    以下のlet vcの行でエラーが発生しております。

    ```
    func onClick() {
    let s = UIStoryboard(name: "ListViewController", bundle: nil)
    let vc = s.instantiateViewControllerWithIdentifier("ListViewController") as! ListViewController
    self.navigationController?.pushViewController(vc, animated: true)
    }
    ```


    StoryboardIDには ListViewControllerと設定しているのですが、
    エラー内容でググッてみたりしたのですが、解決しなかったため
    再度質問させて頂きます。

    度々、大変恐縮ですが何卒宜しくお願いします。

    キャンセル

+1

まず、viewDidLoadの「中に」ドラッグしようとしたと書いていますが、ドラッグできるのは、viewDidLoadの「」ですよ。
質問に書かれていた
http://dev.classmethod.jp/smartphone/iphone/remind-storyboard/
の画面キャプチャでも青い線はviewDidLoadのメソッドの外(で、ViewControllerの中)に挿入するように表示されていますよね。

それと、貼り付けて頂いたStoryboardのキャプチャを見たら、おかしい点だらけです。

  • ソースコードは「listViewController」で定義しているのにStoryboardに設定しているのは「ListViewController」(頭文字が大文字)
  • Storyboardの表示はUITableViewControllerのサブクラスの定義のように見えるのに、ソースコードのlistViewControllerはUIViewControllerのサブクラスになっている。
  • Storyboardの「List View Controller Scene」の下に「List View Controller」が3段重ねで表示されている。通常、UITableViewControllerのサブクラスで定義したもであれば、2段目の表示は「Table View」で3段目の表示は「Table View Cell」か、Identifierを設定したならそのIdentifier名になるはず。複数の誤った箇所に「ListViewController」を指定して無茶苦茶にしたように見える。
  • 「ボタンオブジェクト」を紐付けしようとしたと質問に書いているのに、Storyboardにはボタンオブジェクトがどこにもない。

以上の通り、質問内容とかけ離れたStoryboardが貼り付けられており、アドバイスしようがありません。
質問に記載した情報が実際に問題を起こしているものなのか、見直すことをお勧めします。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

同じタグがついた質問を見る

  • トップ
  • Objective-Cに関する質問
  • Ctrl + ドラッグでオブジェクトをViewControllerクラスへ紐付けができません?でした。どなたかご助言いただけないでしょうか?