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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

解決済

2回答

862閲覧

Xcode10.2 でXibの使い方について

takeshi1907

総合スコア54

Objective-C

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

0クリップ

投稿2019/04/22 07:40

編集2019/04/23 06:55

久しぶりにiOS開発をやっていまして、Xibに追加したTableViewを図のように紐ずけして、ビルドすると以下のエラーが発生します。

イメージ説明

イメージ説明
app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle

AppDelegateに以下のコードを追加しています。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

以前は単純に部品を紐ずけしただけでエラーは出なかったと思いますが、何が原因でしょうか?

その他、不要な紐ずけが残っているようなこともありません。

ストーリーボードで同じことを試した結果問題なく動作しました。Xibの時に問題が発生するようです。

追記:Swiftで同じ動作を試した結果問題なくビルドできました。
Objective-Cの場合に発生するようです。

Mac OSは10.14.4を使用しています。
Xcodeは先ほど9、10.1、10.2 を試しましたが、全て同じ現象が発生しました。

具体的な手順は以下の通りになります。
1、PJを作成する
2、Viewcontroller.xibを作成する
3、Viewcontroller.xibのFile’sOwnerを選択する
4、viewとviewを結ぶ
5、CustomClassのClassにViewControllerを指定する
6、AppDelegateに「AppDelegateに以下のコードを追加しています」を追加する
7、info.plistからMainストーリーボドを外す
8、シュミレーター又は実機で実行する

宜しくお願いいたします。

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

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

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

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

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

fuzzball

2019/04/23 01:02

スクショを見る限り、tableViewのアウトレットが繋がっているように見えないのですが。 あと、Xibの読み込みをしていないのにエラーになるんでしょうか?
takeshi1907

2019/04/23 02:20 編集

画像がわかりずらくすみません。 アウトレットは繋がっています。 また、AppDelegateに以下のコードが書いてあります。 Xibの読み込みをしています。 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; 疑問なのはアウトレットを繋げただけでエラーが発生するのですが、原因がわかりません。 エラー内容で調べると不要なアウトレットが残っている場合に出るエラーのようですが、初回にアウトレットを繋げただけで、いきなりエラーが発生します。 過去に開発していた時はアウトレットを繋げただけでエラーが出るようなことはなかったと記憶しています。 宜しくお願いします。
fuzzball

2019/04/23 02:27

コードは質問内に追記して下さい。 >>アウトレットは繋がっています。 いや、私には繋がっていないように見えるんですよ。 繋がっていることが確認できる画像を追加して下さい。
takeshi1907

2019/04/23 02:34

画像の方を差し替えました。 宜しくお願いします。
fuzzball

2019/04/23 02:37

ViewControllerの名前がさっきと違うんですけど大丈夫ですか?
takeshi1907

2019/04/23 02:39

別プロジェクトで試しており、以前のものとは変わってしまっていますが、条件は同じになります。
fuzzball

2019/04/23 02:40

いや、そういうことは先に伝えてもらわないと、こちらが混乱します。
takeshi1907

2019/04/23 02:50

混乱させてしまいすみません。 アウトレットを繋いだだけでエラーが発生する原因が知りたいのですが、、意図は伝わってますでしょうか?
fuzzball

2019/04/23 02:52

「アウトレットを繋いだだけで」とかは正直どうでもいいのです。(実際には「アウトレットを繋いだだけで」ではないですし。私が聞くまでコードの存在を伝えていませんでしたよね?) なぜエラーが発生するのかを調べています。
fuzzball

2019/04/23 02:53

というかこちらで再現しないので、再現する方法を探しています。
takeshi1907

2019/04/23 02:57

>というかこちらで再現しないので、再現する方法を探しています。 どうもありがとうございます。 追記しましたが、 Mac OSは10.14.4を使用しています。 Xcodeは先ほど9、10.1、10.2 を試しましたが、全て同じ現象が発生しました。
fuzzball

2019/04/23 02:59

現在提示されているコードでは、ViewControllerクラスがどこにも使われていないのですが、どこで使われているのでしょうか?
takeshi1907

2019/04/23 03:15

ViewControllerの方は初回の起動画面として使用している形になります。
fuzzball

2019/04/23 03:44

「AppDelegateに以下のコードを追加しています」のコードが間違っているということですか? 正しいコードを書いてもらえますか?
takeshi1907

2019/04/23 06:21 編集

すみません、どう解釈していいのか混乱するのですが、コードが間違っているという指摘でしょうか? 正しいと思って投稿しているので、間違っている場合は間違っていると言っていただけると助かります。
fuzzball

2019/04/23 06:31

私は「ViewControllerクラスがどこにも使われていない」と指摘しました。 それが間違いなのか、意図したものなのかは、あなたにしか分かりません。 間違いなのであれば修正して下さい。 意図したものなら、ViewControllerクラスが使われているコードを追記して下さい。
takeshi1907

2019/04/23 06:35

すみません、本当にわからないのですが、なぜ「ViewControllerクラスがどこにも使われていない」と思うのですか? 「AppDelegateに以下のコードを追加しています」のコードを実行することにより、ViewControllerのviewDidLoadが呼ばれます。これはViewControllerを使っていると思っています。
fuzzball

2019/04/23 06:37 編集

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; このコードのどこにViewControllerクラスが出てくるのでしょうか? 私はコードの話をしているのであって、実際にViewControllerクラスが実行されるかどうかの話はしていません。
fuzzball

2019/04/23 06:40 編集

ようするに情報が足りないということです。 まだこちらでは症状を再現できていないんですよ。 こういうやりとりはもう時間の無駄ですので、プロジェクトを新規作成した後、症状を再現できるまでのプロセスを全て書いて下さい。
takeshi1907

2019/04/23 06:55 編集

具体的な手順は以下の通りになります。 1、新規PJを作成する 2、Viewcontroller.xibを作成する 3、Viewcontroller.xibのFile’sOwnerを選択する 4、viewとviewを結ぶ 5、CustomClassのClassにViewControllerを指定する 6、AppDelegateに「AppDelegateに以下のコードを追加しています」を追加する 7、info.plistからMainストーリーボドを外す 8、シュミレーター又は実機で実行する
fuzzball

2019/04/23 06:59 編集

パッと見ただけでも、 ・TableViewを乗せてない ・File’sOwnerに何を選択したか書いてない ・「viewとviewを結ぶ」って何の話? ・5番はどのクラスの話? もっと丁寧に書いてもらえませんかね。
fuzzball

2019/04/23 07:00

AppDelegateのviewControllerプロパティの定義も書かれていません。
takeshi1907

2019/04/23 07:11

言いたいことはわかるのですが、ロボットじゃないのである程相手の意図を察していただけないとコミュニケーションが難しいですね。。 全部説明している時間はないので、今回はお見送りで大丈夫です。
fuzzball

2019/04/23 07:15

察しようと思って何時間もやってるけど埒が明かないので聞いてるんです。 この程度の手順なら5分か10分で出来るでしょう。 ロボットなら黙って指摘事項に答えてもらえるというのに。
takeshi1907

2019/04/23 07:24

色々試していただいたり、考えていただき、どうもありがとうございました。感謝いたします。 私に説明能力が足りていないのと、現在、業務中であまり時間もかけられないので今回は大丈夫です。
fuzzball

2019/04/24 00:33 編集

あれで解決したってことは、質問に書いているエラーメッセージも間違いってことですかね。 これだけ間違いだらけの質問も珍しい。
takeshi1907

2019/04/24 02:30

再現できないと言っていましたが、「AppDelegateに以下のコードを追加しています。」をそのまま試しましたか? もう良いのですが、、
fuzzball

2019/04/24 02:36

質問に書かれているエラーは出ませんでした。別のエラーが出ます。 >>もう良いのですが 良くないんですよ。こんな調子でまた質問されたら回答者は迷惑です。
takeshi1907

2019/04/24 02:45

人は千差万別のであなたが回答しずらいなら回答しなくていいんですよ。 それでも良いと思う別の人が回答するので あなたはまだ若いですか?柔軟性に欠けている感じがします。
fuzzball

2019/04/24 02:51

>>質問に書かれているエラーは出ませんでした。別のエラーが出ます。 に対する返信は?
fuzzball

2019/04/24 02:53

自分の間違いを素直に認められないのは、いわゆる老害さんですかね?
takeshi1907

2019/04/24 03:21 編集

>に対する返信は? 別のエラーとはどのようなエラーですか? エラーの内容がわかりません。 >自分の間違いを素直に認められない 間違いの定義がわかりません。
fuzzball

2019/04/24 03:48

>>エラーの内容がわかりません。 なぜ自分で試さないんですか? 質問は間違いだらけだし、コミュニケーションは全く取れないし、あれだけViewControllerって言ってるのに間違いに気づかないし、脳に欠陥でもあるんですかね。有給とって一度病院に行ってみてはどうでしょうか?
takeshi1907

2019/04/24 03:58

あまり時間も取れないのでもういいと何度も言ってませんか? 日本語わかりますか?
takeshi1907

2019/04/24 04:03

それとあなたは随分偉そうですが、なんなんですか?
fuzzball

2019/04/24 04:21

時間がないなら返信しなくていいですよ。 私はただの回答者です。
takeshi1907

2019/04/24 04:24

仮にあなたが能力が高かったとして、能力が低い人間に欠陥だの病院行けだの、人間として最低で最悪ですね。
fuzzball

2019/04/24 04:31

能力が低いなんて一言も言っていませんが。 ・質問が間違いだらけ ・再三の指摘にも関わらず間違いに気づかない ・コミュニケーションが取れない これだけ揃えば病院を勧めたくもなるというものです。
takeshi1907

2019/04/24 04:33

要するに質問を間違えて指摘に気がない奴は病院に行けということですよね?
fuzzball

2019/04/24 04:36

ほら、全然コミュニケーション取れないでしょ。 「行け」とか言ってないし。 被害妄想?
takeshi1907

2019/04/24 04:41

そう聞こえるのです。それが心理です。 そう聞こえる人も世の中にはいるので言葉には気をつけましょう。
fuzzball

2019/04/24 04:45

忙しいんじゃなかったんですか? 暇なのであればエラーメッセージの間違いを修正してもらえませんかね。
takeshi1907

2019/04/24 04:50

>修正してもらえませんかね。 なぜ誰のために修正するのですか? エラーはもう解決にしたので良いです。 それよりあなたの言動の方が納得いきません。
fuzzball

2019/04/24 05:05

ここは問題を解決するためだけのサイトじゃないんです。 ヘルプの一番最初に書いています。 >>価値のあるコンテンツを世の中に残し届ける事を目的としています。 間違っている質問と、それに対するエスパー回答に価値があるとは思えません。
takeshi1907

2019/04/24 05:13

それはそれでわかりました。 今後は気をつけます。 なので、貴方も非を認めて言動に対して考え直してください。
guest

回答2

0

ベストアンサー

objc

1self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];

ではなく

objc

1self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

です。

Xibのfile's ownerのカスタムクラスはそのクラスのオブジェクトであるという前提を示しているだけであり、実際にどのクラスのオブジェクトがfile's ownerとなるかはプログラム上からいくらでも変えられます。

提示のプログラムですとUIViewControllerクラスのオブジェクトがfile's ownerとなるのでエラーが発生します。
(UIViewControllerにはtableViewプロパティがないため)

投稿2019/04/23 08:43

MasakiHori

総合スコア3384

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

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

takeshi1907

2019/04/23 11:59

ViewControllerという紛らわしい名前をつけていたために、UIViewControllerになっているのに全く気が付きませんでした。どうもありがとうございました。
guest

0

Storyboardを使っていないのであれば、GeneralのMain Interfaceは空っぽにして下さい。

投稿2019/04/23 02:38

fuzzball

総合スコア16731

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

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

takeshi1907

2019/04/23 02:42

確認したところ Generalの Main Interfaceの方も空になっている状態です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問