2011-08-08 5 views
1

私は(下のリンク)この投稿へ渡って来て、それはあなたが交換することができると述べている:self.window.rootViewController = self.someControllerは機能しませんか?

[window addSubview: someController.view];

で:

self.window.rootViewController = self.someController;

すべての構成のための私のベースSDKを最新に設定されていますiOS(現時点ではiOS 4.2に設定されています)が、プロジェクトをビルドしようとするとこのエラーが発生します:Request for member, 'mainMapView' in something not a structure or union.

addSubview:うまく動作します。 これはアプリデリゲートのpropertyとしてmainMapViewを探しているので、これがある

#import "MakeView2AppDelegate.h" 

#import "MainMap.h" 

@implementation MakeView2AppDelegate 

@synthesize window; 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    // Override point for customization after application launch. 

    MainMap *mainMapView = [[MainMap alloc] initWithNibName:nil bundle:nil]; 

    //[self.window addSubview:mainMapView.view]; 

    self.window.rootViewController = self.mainMapView; 

    [self.window makeKeyAndVisible]; 

    return YES; 
} 

self.window.rootViewController vs window addSubview

答えて

4

...問題のコードです。しかし、これはMapViewクラスはUIViewControllerから継承することを想定している

self.window.rootViewController = mainMapView;

:その行を次のように変更します。それは?

+0

は、それはあなたが正しかったんや!ありがとう! – Mike

1

iOS4以降、これはXcode4のテンプレートのデフォルト動作です。他のメソッドがiPhone OS 3.xでは動作しないので、おそらく下位互換性のためにaddSubviewを使う方が良いでしょう

2

あなたの例では、self.mainMapViewを呼び出していますが、mainMapViewがクラスのプロパティでない限り、仕事。あなたは "自己"を削除する場合。それから、それは正常に動作します。

0

あなたはmainMapViewのプロパティを作成していません。

ので、あなたがmainMapViewを使用する必要がself.mainMapView

を書き込むことはできません。より多くの助けを

はこれを参照してください。

  Understanding your (Objective-C) self 

http://useyourloaf.com/blog/2011/2/8/understanding-your-objective-c-self.html

+0

あなたが言っていることは完璧な意味合いがあります。私は、私が他のポストで見た例に混乱していたと思う。彼らはそこにも「自己」を持っていました。例: - (ボイド)applicationDidFinishLaunching:(のUIApplication *)アプリケーション 変更[ウィンドウaddSubview:someController.view]。 (1) 〜 self.window.rootViewController = self.someController; (2) – Mike

関連する問題