IBOutletが認識されない

このQ&Aのポイント
  • Xcode3.2.5で久しぶりにiPhoneアプリ作成の再勉強をしていますが、IBOutletがInterface Builderで認識しません。
  • 新規プロジェクトでWindow-based Applicationを選択し、HelloWorldプロジェクトを作成しました。しかし、MainWindow.xibを開いてもIBOutletのlabelが表示されません。
  • 古いバージョンのXcodeで作成したものでは正常に表示されますが、新しいバージョンでは表示されません。解決策を教えてください。
回答を見る
  • ベストアンサー

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 が一番この例に詳しいようですがうまくいきません。 この解決法の説明をよろしくお願い致します。

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

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.4

> やはりシンクロしていないようです。 Nibファイルの名称が変わっていないか? Nibファイルの情報ウインドウで、「フルパス」がプロジェクトフォルダ内になっているか? 「(Project Name)-info.plist」で、「Main nib file base name」が「MainWindow」になっているか? ここらを確認してください。 作り込んだプロジェクトが、とつぜんおかしくなったのではなく、作ったばかりのプロジェクトがおかしいのですから、いちからプロジェクトを作り直したほうが、早いと思いますが…… あるいは、「ディスクユーティリティ」で「アクセス権の修復をする」という種類の問題なのかもしれません。

narative_h
質問者

お礼

>「(Project Name)-info.plist」で、「Main nib file base name」が「MainWindow」になっているか? は大丈夫でした。 あとシンクロしてIBOutletも反映されるようになりました。 が、プロジェクトを作成してすぐにはシンクロしてくれません。 一旦、プロジェクトを閉じて プロジェクトファイルの中の、 HelloWorld.xcodeproj アイコンを直接クリックして作業を開始する時に限って ちゃんと緑のランプがつきシンクロするのです。 よくわからないのは、 Xcodeのメニューから「ファイル→最近使ったプロジェクトを開く」でプロジェクトの作業を開始した場合は シンクロされないのです。 過去に作成したプロジェクトがうまくいったのは、 プロジェクトファイルの中の ~.xcodeproj をクリックしたからでした。 「ディスクユーティリティ」で「アクセス権の修復をする」してみて最後のお礼とさせていただきます

narative_h
質問者

補足

とりあえず、プロジェクトを作成してすぐにはシンクロしないのですが、 上記の方法でIBOutlet がちゃんと反映されるようになったので この質問を閉じさせていただきます。 また同じような質問を見かけた時にはよろしくお願い致します。w メリークリスマス!

その他の回答 (3)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.3

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

narative_h
質問者

お礼

何度も回答ありがとうございます。 まだ解決はしておりませんが、糸口はつかめました。 やはりシンクロしていないようです。 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. というポップアップ表示がされます。 どうしてシンクロされていないのか今調べています。

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

> イージーミスだとうれしいのですが… > 最終手段としてはもう一度Xcodeインストールということでしょうか ヘッダファイルを変更したあとに、保存していないとか、考えられるイージーミスは、ほかにもあります。 Xcodeを再インストールする前に、プロジェクトを最初から作り直してみては、いかがですか? > Xcodeもしくは、Interface Builder のどこかでそのような設定をする場所があるのかも知れません。 そうお考えなら、どういう環境設定の変更をなさったのか、思い出す限り列挙してください。もちろんデフォルトのままなら、問題が起きることはありません。 とにかく、再現ができなければ、だれも解決法を探すことはできないので、「こうすれば、だれの環境でも、かならず再現する」というものを提供していただくことが、すべての始まりです。

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

こちらのXcodeのバージョンも、3.2.5です。 おっしゃるとおり、忠実に再現して、Interface Builderを起動しましたが、下図のとおり、インスペクタに「label」が表示されます。 おそらくスペルミスなど、イージーミスが原因だと思われます。よーく、ご確認ください。

narative_h
質問者

お礼

早速の回答ありがとうございます。 スペルミスに関しては、質問文そのままのコードをコピペしてもがうまくいきません。 以前作成したプロジェクトを開くとしっかりと認識してくれているので、 Xcodeもしくは、Interface Builder のどこかでそのような設定をする場所があるのかも知れません。 イージーミスだとうれしいのですが… 最終手段としてはもう一度Xcodeインストールということでしょうか…トホホ

関連するQ&A

  • Xcode TableView~詳細へ遷移について

    初めまして。 現在Xcodeにてアプリ開発中の初心者です。 現在、Tableviewのリストをタップしたら詳細なページへ遷移する、というものを作っております。 以下のサイトを参考にし、作成致しました。 http://www.raywenderlich.com/ja/34037/table-view%E3%81%ABsearch%E6%A9%9F%E8%83%BD%E3%82%92%E5%8A%A0%E3%81%88%E3%81%BE%E3%81%97%E3%82%87%E3%81%86 上記サイトで遷移するところまでは出来ましたものの、 詳細な情報をどう記載していいのかよくわからず、色々サイトなどを見てやってみたのですが実現出来ておりません。 こちらのyoutube動画を見ながら https://www.youtube.com/watch?v=lMVNoDEkrxk DetailViewController.hとDetailViewController.mを以下のように追加してみたのですが 駄目でした。 <DetailViewController.h> #import <UIKit/UIKit.h> @interface DetailViewController : UIViewController { IBOutlet UILabel *Built; IBOutlet UILabel *Height; IBOutlet UILabel *Type; IBOutlet UILabel *Visitation; } @property (strong, nonatomic) IBOutlet UILabel *candyArray; @property (strong, nonatomic) IBOutlet UILabel *filteredCandyArray; @property (strong, nonatomic) IBOutlet UIImageView *candySearchBar; @property (strong, nonatomic) NSArray *DetailModal; @end <DetailViewController.m> #import "DetailViewController.h" @interface DetailViewController () @end @implementation DetailViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _candyArray.text = _DetailModal[0]; _filteredCandyArray.text = _DetailModal[1]; _candySearchBar.image = [UIImage imageNamed:_DetailModal[2]]; self.navigationItem.title = _DetailModal[0]; if ([_candyArray.text isEqualToString:@"chocolate bar"]) { Built.text = @"test1"; Height.text = @"test2"; Type.text = @"test3"; Visitation.text = @"test4"; } } @end どなたかご存知の方、お詳しい方教えて頂けませんでしょうか。 質問に慣れておらず、また知識が浅く質問方法や情報など不足しておりませんでしたら ご指摘頂けますと幸いです。

  • Xcodeのラベル名とIBのラベル接続ができません

    Xcodeで、hogeViewController.h @interface hogeViewController : UIViewController { IBOutlet UILabel *myLabel; } @end を作成し、hogeViewController.xibをダブルクリックしてInterface Builderを開いて、 ViewにLabelを貼りつけ、 File's OwnerのOutletsからmyLabelをViewのLabelに接続したいのですが、 なぜかFile's OwnerのOutletsにmyLabelが表示されません。 昨日までは普通にできていたのですが、今日突然できなくなりました。 以前も同じようなことが起こり、その時は Xcodeの設定ファイル ~/Library/Preferences/com.apple.Xcode.plist を削除したら直ったのですが、 今回は設定ファイルを消しても直らないようです。 どうしたら良いのでしょうか?

  • UITableViewの編集モードが実装できない

    Objective-Cを用いてiPhoneアプリのプログラミングを勉強しています。 http://konton.ninpou.jp/program/cocoa/userinterface/UITableView/UITableView2.html UITableViewで編集モードを実装したいと思い、こちらのサイトを参考にコードを記述したのですがsignal:SIGABRTが出てしまい、実行できません。 一応build succeedとは出るのですが、iOSシミュレータの最初の画面が表示される前にエラーが出てしまうという状況です。 以下にコードを晒します。 アドバイスお願いしますm(_ _)m ■ヘッダファイル #import <UIKit/UIKit.h> @interface ViewController : UITableViewController { NSMutableArray *stringArray; UITableView *myTableView; } @property (nonatomic, retain) IBOutlet UITableView *myTableView; @property (nonatomic, retain) NSMutableArray *stringArray; @end ■実装ファイル http://www.dotup.org/uploda/www.dotup.org5336157.txt コードが古いようで、ARCエラーが出ましたが、以下のサイトを参考に対策をしたところ、コード上のエラー表示は無くなりました。 http://d.hatena.ne.jp/mTsuruta/20111107/1320615543

  • Xcodeにて、オブジェクトの縦位置がずれる。

    標記の現象が起こり、困っております。 storyboardにおいてLabelを中央に配置し、シミュレータを起動するのですが、 実行結果で、Labelの縦位置が中央位置より下方向に位置するようになってしまいます。 File Inspector > Interface Builder Document > Use Autolayoutのチェックを外しても、 実行結果は変わりませんでした。 以前はこれで直ったのですが、最新のXcodeではダメなのでしょうか。 ■環境 ・Xcode 4.6 ・iPhone 6.1 Simulator お手数ですが、ご教授願います。

  • Obj-CでViewコントローラのラベルに表示する

    Objective-Cであるクラスから、特定のViewControllerのもつLabel要素へテキストを表示したく、色々試してみたのですが、うまく動作しませんでした。 詳しい方、ぜひアドバイスお願いします。 □やりたいこと クラス側から、ViewControllerの持つ要素を操作したい □テストで使用したコード test_buttonをクリックすると、lbl_mesへ文字列を表示する ----------------- ■classTest.h #import "helloViewController.h" ----------------- ■classTest.m #import "classTest.h" - (void) makeStr { helloViewController *hv = [[helloViewController alloc] init]; hv->lbl_mes.text = @"HELLO WORLD"; [hv release]; } ----------------- ■helloViewController.h #import "classTest.h" @interface helloViewController : UIViewController { @public IBOutlet UILabel* lbl_mes; } @property(nonatomic,retain) IBOutlet UILabel* lbl_mes; -(IBAction) test_button; ----------------- ■helloViewController.m #import "helloViewController.h" -(IBAction) test_button{ classTest *clst = [[classTest alloc] init]; [clst makeStr]; [clst release]; } よろしくお願いします。

  • objective-c 初心者です

    はじめまして。iphone アプリ開発を始めようと思い、まずは簡単なアプリからと人のまねをして時計アプリを書いております。http://www.slideshare.net/takuya0429/121216の43枚目のスライドを丸写しにしました。しかし、iPhoneシミュレーター(iphone 6.1)でシミュレーションしても真っ黒な画面が移されるだけで思うように機能しません。 なぜ機能しないかを考えられる範囲でご教授願いたい次第です。 環境はmacbook air 13inch にてXcode 4.6.3を使用しております。 以下に作成したコードを記載いたします。 // // ViewController.h // watch // // Created by motoyama kaoru on 2013/08/15. // Copyright (c) 2013年 motoyama kaoru. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UILabel *timeLabel; @end // // ViewController.m // watch // // Created by motoyama kaoru on 2013/08/15. // Copyright (c) 2013年 motoyama kaoru. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES]; } -(void)update{ NSDate *now = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm:ss"]; self.timeLabel.text = [df stringFromDate:now]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end

  • Iphoneアプリ開発について

    Interface Builderを使用せずXcodeのみで 画面を作成したいです。 以下のサイトのような感じです。 http://webos-goodies.jp/archives/how_to_create_an_iphone_app_without_interface_builder.html 他に参考になるサイト、参考書を教えて頂きたいです。 よろしくお願いします。

  • iPhone: PageControlについて

    現在、iPhoneのホーム画面風アプリを制作しています。 PageControlとScrollViewを使用して、ページの移動はできるようになりましたが、 以下の問題が発生して困っています。 [問題] ・PageControlで2ページの画面を作っていますが、1ページ目に乗っている「UIButton」は正しく反応するのですが、2ページ目(スライドして表示)の上に乗っている「UIButton」がどうしても反応しません。。。 何か設定が必要なのでしょうか? ***PageControl & ScrollViewのコーディング(一部抜粋)*** (UIButtonの記述等は省略しています) [XXXViewController.h] @interface XXXViewController : UIViewController <UIScrollViewDelegate> { // 画面スクロール用 UIScrollView *scrollView; // PageControl [画面下方の白丸] UIView *pageView; UIPageControl *pageControl; @property (nonatomic, retain) IBOutlet UIScrollView *scrollView; @property (nonatomic, retain) IBOutlet UIView *pageView; @property (nonatomic, retain) IBOutlet UIPageControl *pageControl; [XXXViewController.m] - (void)viewDidLoad { [super viewDidLoad]; scrollView.pagingEnabled = YES; scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * 2, scrollView.frame.size.height); scrollView.showsHorizontalScrollIndicator = NO; scrollView.showsVerticalScrollIndicator = NO; scrollView.delegate = self; pageControl.numberOfPages = 2; pageControl.currentPage = 0; pageView.backgroundColor = UIColor.clearColor; [scrollView addSubview:pageView]; } - (IBAction)changePage:(id)sender { CGRect frame = scrollView.frame; frame.origin.x = frame.size.width * pageControl.currentPage; frame.origin.y = 0; [scrollView scrollRectToVisible:frame animated:YES]; } - (void)scrollViewDidScroll:(UIScrollView *)sender { CGFloat pageWidth = scrollView.frame.size.width; pageControl.currentPage = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; }

    • ベストアンサー
    • Mac
  • iphoneアプリ interface builderでのLabelの

    iphoneアプリ interface builderでのLabelの文字スペースの変更 iphoneアプリを制作しようとしており、interface builderのLibraryからLabelをドラッグしてViewの画面に配置したのですが、このLabelの文字と文字の間のスペースは微調整できるのでしょうか? 「123」を「 1 2 3 」のように、文字と文字の横のスペースを広げたいと考えています。 お手数ですが、教えて頂けると幸いです。 以上、よろしくお願いします。

    • ベストアンサー
    • Mac
  • Xcodeとインターフェイスビルダーのシンクロ

    Xcodeで適当にプロジェクト(例えばUntitledプロジェクト)を作成し、 xibファイルをクリックしてInterface Builderを起動させます。 通常ならば添付画像の2のMainWindow.xibのように 緑のランプが表示されると思うのですが、 1のxibウィンドウのようになりうまくInterface Builderとシンクロされません。 http://okwave.jp/qa/q6404796.html の質問のやりとりの中でも記述したのですが、 一旦、プロジェクトを閉じて プロジェクトファイルの中の、 Untitled.xcodeproj アイコンを直接クリックして作業を開始する時に限って ちゃんと緑のランプがつきシンクロするのです。 プロジェクトを作成してすぐにInterface Builderとシンクロされている状態にしたいのですが、上述のような症状はどのような原因によるものなのでしょうか? よろしくお願い致します。

専門家に質問してみよう