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

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

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

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

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

Swift

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

Q&A

解決済

3回答

2227閲覧

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

qaz3330

総合スコア113

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

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

Swift

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

0グッド

0クリップ

投稿2016/01/10 15:23

編集2016/01/10 16:53

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のキャプチャ

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

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

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

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

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

guest

回答3

0

ベストアンサー

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

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

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

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

swift

1import Foundation 2import UIKit 3 4class ListViewController: UITableViewController { 5 6 override func viewDidLoad() { 7 8 } 9 10 override func didReceiveMemoryWarning() { 11 super.didReceiveMemoryWarning() 12 } 13 14// override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 15// return 1 16// } 17 18}

投稿2016/01/22 16:57

SatoTakeshiX

総合スコア113

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

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

qaz3330

2016/01/23 02:55

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

0

まず、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が貼り付けられており、アドバイスしようがありません。
質問に記載した情報が実際に問題を起こしているものなのか、見直すことをお勧めします。

投稿2016/01/11 04:47

編集2016/01/11 04:50
TakeOne

総合スコア6299

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

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

0

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

投稿2016/01/10 16:16

toki_td

総合スコア2850

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

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

qaz3330

2016/01/10 16:55

早速ご回答いただき有難う御座います。 質問文、最後にキャプチャを追加しました。 >Storyboard側のViewControllerのクラスがlistViewControllerに設定されていないか間違っているんじゃないでしょうか? Identity and Type という所と、Custom Class という所にはlistViewControllerを指定しております。 こことはまた別の所で指定しなくてはいけないということでしょうか?
toki_td

2016/01/10 17:17

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

2016/01/11 08:28 編集

有難う御座います。 ご指摘の通りにやると上手くできました。 ただ、もう一点追加で恐縮ですが、画面遷移を行った際に、エラーが出てしまいました。 ``` 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と設定しているのですが、 エラー内容でググッてみたりしたのですが、解決しなかったため 再度質問させて頂きます。 度々、大変恐縮ですが何卒宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問