2009-05-23 16 views
1

このように動作します:iphoneココア「エラー:何かない構造体または共用体のメンバのリクエスト____」

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil]; 
viewController.parentViewController = self; 
self.type1ViewController = viewController; 
[self.view insertSubview:viewController.view atIndex:0]; 
[viewController release]; 

しかし、この方法は、何かない構造に「私にメンバーparentViewControllerの要求をエラーが発生しますかユニオン ":

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil]; 
self.type1ViewController = viewController; 
self.type1ViewController.parentViewController = self; 
[self.view insertSubview:viewController.view atIndex:0]; 
[viewController release]; 

私はなぜそれが異なっているのか分かりません。コンパイラはそれが好きではないことを何に分かりますか?あなたがself.type1ViewController.parentViewController代わりのviewController.parentViewControllerを呼び出すとあなたには、いくつかのスーパークラスではなく、type1ViewControllerとしてself.type1ViewControllerを宣言しているので、事前にあなたの助けのための おかげ

答えて

4

、それはあなたにエラーを与えています。コンパイラがこの宣言を見ると、parentViewControllerプロパティが見つからないため、エラーが発生します。

最初の例では、viewControllerはまだtype1ViewControllerとして宣言されているので、正常に動作します。 2番目の例では、実際にはtype1ViewControllerにキャストしても機能しますが、もちろん宣言を変更する方が良いでしょう。

+0

明らかではありませんが、私は人々がそれを理解することを望んでいましたが、このコードがType1ViewControllerクラスのtype1ViewControllerプロパティを含む "ParentViewController"クラスにあることを明確にする必要があります。 Type1ViewControllerは、ParentViewController型のparentViewControllerプロパティで宣言されています。 そのような場合、私はあなたが完全に理解しているかどうかはわかりません。それはちょうど倍の 'ですか?'コンパイラを悩ます構文? ParentViewControllerのヘッダーファイルで、self.type1ViewControllerはType1ViewControllerとして宣言されています。そのように動作させるためにキャストされるものは何ですか? –

0

ParentViewControllerのtype1ViewControllerプロパティはType1ViewControllerのクラスで宣言された場合は、最初の行は次のようになります。

Type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil]; 

はない:

type1ViewController *viewController = [[type1ViewController alloc] initWithNibName:@"Type1View" bundle:nil]; 

は、大文字と小文字に注意してください。私は実際には、エラーや警告なしにコンパイルされた少し驚いています。

0

Type1ViewControllerのNIBファイルもチェックします。私は、このエラーがnib上のReferencing Outletsにスローされる問題に遭遇しました。私が作成したカスタムView Controller以外のものを探していました。

関連する問題