self.window.rootViewController = self.someController不工作?

我在这里遇到这个post(下面的链接),它说,你可以取代:

[window addSubview: someController.view];

有:

self.window.rootViewController = self.someController;

我的所有configuration的基础SDK被设置为最新的iOS(目前设置为iOS 4.2),但是当我尝试生成项目时,我得到这个错误: Request for member, 'mainMapView' in something not a structure or union.

添加注释掉addSubview:虽然工作正常。 这是有问题的代码…

 #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窗口addSubview

这是因为您正在寻找作为应用程序委托的propertymainMapView 。 将该行更改为:

self.window.rootViewController = mainMapView;

这是假设MapView类inheritance自UIViewController ,但是。 可以?

在你的例子中,你调用self.mainMapView,但除非mainMapView是类的属性,这是行不通的。 如果你删除了“自我”。 从它,它会正常工作。

从iOS4开始,这已经是Xcode4模板中的默认行为。 为了向后兼容性,使用addSubview可能会更好,因为另一种方法不适用于iPhone OS 3.x

你还没有为mainMapView创build属性。

所以你不能写self.mainMapView

你必须使用mainMapView。

为更多的帮助看到这一点:

  Understanding your (Objective-C) self 

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