こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

IBOutlet が認識されない

Xcode3.2.5 で久しぶりにiPhoneアプリ作成の再勉強をしていますが、

IBOutlet が Interface Builder で認識しません。

手順###
新規プロジェクトで Window-based Application を選択して
HelloWorldプロジェクトを作成。

HelloWorldAppDelegate.h
に以下のように記述

#import <UIKit/UIKit.h>

@interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
IBOutlet UILabel *label; //←追加
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UILabel *label; //←追加

@end

保存して、MainWindow.xib をクリックし Interface Builder を起動しましたが、
Hello World App Delegate をみても IBOutlet の label が
ちゃんと Inspector に表示されません。

以前、前のバージョンのXcodeで作成したものをみてみると
ちゃんと反映されるのですが新バージョンのXcodeだと具合が違うようです。

ググってみると
http://iphone-ipodtouch-development.blogspot.com/2010/10/inspector.html
が一番この例に詳しいようですがうまくいきません。

この解決法の説明をよろしくお願い致します。

投稿日時 - 2010-12-24 17:33:35

QNo.6404796

すぐに回答ほしいです

質問者が選んだベストアンサー

> やはりシンクロしていないようです。

Nibファイルの名称が変わっていないか?
Nibファイルの情報ウインドウで、「フルパス」がプロジェクトフォルダ内になっているか?
「(Project Name)-info.plist」で、「Main nib file base name」が「MainWindow」になっているか?

ここらを確認してください。

作り込んだプロジェクトが、とつぜんおかしくなったのではなく、作ったばかりのプロジェクトがおかしいのですから、いちからプロジェクトを作り直したほうが、早いと思いますが……

あるいは、「ディスクユーティリティ」で「アクセス権の修復をする」という種類の問題なのかもしれません。

投稿日時 - 2010-12-24 21:38:20

補足

とりあえず、プロジェクトを作成してすぐにはシンクロしないのですが、
上記の方法でIBOutlet がちゃんと反映されるようになったので
この質問を閉じさせていただきます。

また同じような質問を見かけた時にはよろしくお願い致します。w

メリークリスマス!

投稿日時 - 2010-12-24 22:25:22

お礼

>「(Project Name)-info.plist」で、「Main nib file base name」が「MainWindow」になっているか?
は大丈夫でした。

あとシンクロしてIBOutletも反映されるようになりました。
が、プロジェクトを作成してすぐにはシンクロしてくれません。

一旦、プロジェクトを閉じて
プロジェクトファイルの中の、
HelloWorld.xcodeproj アイコンを直接クリックして作業を開始する時に限って
ちゃんと緑のランプがつきシンクロするのです。

よくわからないのは、
Xcodeのメニューから「ファイル→最近使ったプロジェクトを開く」でプロジェクトの作業を開始した場合は
シンクロされないのです。

過去に作成したプロジェクトがうまくいったのは、
プロジェクトファイルの中の ~.xcodeproj をクリックしたからでした。

「ディスクユーティリティ」で「アクセス権の修復をする」してみて最後のお礼とさせていただきます

投稿日時 - 2010-12-24 22:09:57

ANo.4

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

Interface Builderのファイルメニュー「Reload All Class Files」を実行してみてください。このメニューは、Interface BuilderがリアルタイムでXdodeにシンクロするようになる前のバージョンで、シンクロさせるメニューです。
これでシンクロするかしないかで、問題を絞り込めるでしょう。

投稿日時 - 2010-12-24 20:24:46

お礼

何度も回答ありがとうございます。

まだ解決はしておりませんが、糸口はつかめました。

やはりシンクロしていないようです。

Interface Builderにて
MainWindow.xibウィンドウの下あたりに
本来ならば、緑のランプが付いているはずが、
無色のままで、そこをマウスオーバーすると

There is no Xcode project associated with this
document. Interface Builder will synchronize
with open Xcode projects that contain this
document.

というポップアップ表示がされます。
どうしてシンクロされていないのか今調べています。

投稿日時 - 2010-12-24 21:11:41

ANo.2

> イージーミスだとうれしいのですが…
> 最終手段としてはもう一度Xcodeインストールということでしょうか

ヘッダファイルを変更したあとに、保存していないとか、考えられるイージーミスは、ほかにもあります。

Xcodeを再インストールする前に、プロジェクトを最初から作り直してみては、いかがですか?

> Xcodeもしくは、Interface Builder のどこかでそのような設定をする場所があるのかも知れません。

そうお考えなら、どういう環境設定の変更をなさったのか、思い出す限り列挙してください。もちろんデフォルトのままなら、問題が起きることはありません。
とにかく、再現ができなければ、だれも解決法を探すことはできないので、「こうすれば、だれの環境でも、かならず再現する」というものを提供していただくことが、すべての始まりです。

投稿日時 - 2010-12-24 20:05:54

ANo.1

こちらのXcodeのバージョンも、3.2.5です。
おっしゃるとおり、忠実に再現して、Interface Builderを起動しましたが、下図のとおり、インスペクタに「label」が表示されます。

おそらくスペルミスなど、イージーミスが原因だと思われます。よーく、ご確認ください。

投稿日時 - 2010-12-24 18:57:51

お礼

早速の回答ありがとうございます。

スペルミスに関しては、質問文そのままのコードをコピペしてもがうまくいきません。

以前作成したプロジェクトを開くとしっかりと認識してくれているので、
Xcodeもしくは、Interface Builder のどこかでそのような設定をする場所があるのかも知れません。

イージーミスだとうれしいのですが…
最終手段としてはもう一度Xcodeインストールということでしょうか…トホホ

投稿日時 - 2010-12-24 19:25:29

あなたにオススメの質問