我在这里看到了这篇文章(下面的链接),它说你可以替换:
[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:工作得很好。这是有问题的代码…
#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
这是因为您正在寻找mainMapView
作为应用程序委托的property
。将该行改为:
self.window.rootViewController = mainMapView;
这是假设MapView
类继承自UIViewController
。不是吗?
在您的示例中,您正在调用self。但是除非mainMapView是类上的一个属性,否则这是行不通的。如果你把self.去掉,它就能正常工作了
自iOS4以来,这已成为Xcode4模板中的默认行为。为了向后兼容,最好使用addSubview,因为其他方法不适用于iPhone OS 3.x
您还没有为mainMapView创建属性。
所以你不能写self。mainmapview
你必须使用mainMapView
查看更多帮助:
Understanding your (Objective-C) self
http://useyourloaf.com/blog/2011/2/8/understanding-your-objective-c-self.html