2009-10-29 11 views
7

私はUIViewControllerを持っていますxibファイルからロードしてナビゲーションコントローラスタックにプッシュしています。ビューコントローラ用のヘッダファイルでIBOutletにUILabelを接続するとクラッシュする

、私が持っている:私はまだコードに「myTitle」で何もしない

IBOutlet UILabel *myTitle; 

。私は接続を設定していました。

アプリケーションをコンパイルして実行すると、xibファイルにラベルが定義されていないため、IBOutletには何も付いていません。ビューコントローラは、インターフェイスビルダで構築したビューを表示するだけで、きれいに表示されます。

インターフェイスビルダーのxibにラベルを追加しても、コンセントに接続せずに再コンパイルしても、それでも機能しますが、入力したデフォルトのテキストでラベルが表示されます。

しかし、インタフェースビルダーのラベルにmyTitleを接続して再コンパイルして実行すると、View Controllerをナビゲーションコントローラのスタックにプッシュしようとするまでうまくいきます。その時点でクラッシュします。

*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x4558e20 

コンセントをもう一度切断すると、以前のように静的ラベルが表示され、作業を再開します。ビューが表示されると、ファンキーなことが起こっているように見えます。なぜなら、ビューをナビゲーションスタックにプッシュするとクラッシュが発生するからです。

私はIBOutletをUILabelなどに追加する予定はありませんか?それとも何か他のことが起こっていますか?問題を探す場所に関する提案はありますか?

答えて

6

IBOutletのアクセサを作成しましたか?あなたの.mファイルで、その後

@property (assign) IBOutlet UILabel *myTitle; 

そして、

@synthesize myTitle 
+0

私は同じ問題があり、アクセサーを作成しました。ブレークポイントを設定すると、コードの最初の行に到達する前にブレークポイントが爆発します。私の場合、問題は最初の(唯一の)View Controllerにあります。 – Andiih

9

はい、それは例えば、間違ったPARAM名が原因で発生することがこの試してみてください。

IBOutlet UILabel title; 

をし、それはそのような例外を呼び出します:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x143f520' 
+5

IBOutlet 'title'を呼び出そうとしたときにこの問題が発生しました。私がそれを「theTitle」と改名すると、すべてが順調でした。おそらく、衝突を避けるためにここでは変数名に注意する必要があります。 –

+2

実際、 'title'は予約されており、UIView内の内部定義を踏んだことを知らせる良いエラーフラグはありません。これは、今夜私をしばらく悩ませました。 – radven

+0

大声で叫んでも、私も、その年齢にこだわりました、ありがとう! –

5

私は同じ問題を抱えていました。 *タイトルは予約されており、Xcodeはこれをあなたに伝えません。一度私はそれを別のものに改名した。

1

私の場合、私はUIToolBarにUILabelを持っていました。私のために修正したのは、toolBarを削除し、新しいUILabelで新しいものを追加することでした。 IBのバグ。

関連する問題