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

时间:2011-08-08 12:16:02

标签: objective-c ios

我在这里看到了这篇文章(链接如下),它说明你可以替换:

[window addSubview: someController.view];

使用:

self.window.rootViewController = self.someController;

My Base SDK for All Configurations设置为Latest 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

4 个答案:

答案 0 :(得分:4)

这是因为您正在寻找mainMapView作为应用代理的property。将该行更改为:

self.window.rootViewController = mainMapView;

然而,假设MapView类继承自UIViewController。是吗?

答案 1 :(得分:2)

在您的示例中,您正在调用self.mainMapView,但除非mainMapView是类的属性,否则这将无效。如果你删除“自我”。从它,它将工作正常。

答案 2 :(得分:1)

从iOS4开始,这是Xcode4模板中的默认行为。使用addSubview以向后兼容可能更好,因为其他方法不适用于iPhone OS 3.x

答案 3 :(得分:0)

你没有为mainMapView创建属性。

所以你不能写self.mainMapView

你必须使用mainMapView。

获取更多帮助,请看:

           Understanding your (Objective-C) self

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