1

这种方式有效:

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];

我不明白为什么它应该不同。编译器看到它不喜欢什么?提前感谢您的帮助

4

3 回答 3

4

当您调用self.type1ViewController.parentViewController而不是viewController.parentViewController,它会给您一个错误,因为您已self.type1ViewController声明为某个超类,而不是 type1ViewController。当编译器查看这个声明时,它不会找到 parentViewController 属性,所以它会给你错误。

在第一个示例中,您的 viewController 仍被声明为 type1ViewController,因此可以正常工作。如果将它转换为 type1ViewController,它实际上仍然可以在第二个示例中工作,但当然最好只是更改声明。

于 2009-05-23T23:37:46.067 回答
0

我还会检查您的 NIB 文件中的 Type1ViewController。我遇到了这个错误会在笔尖上的引用插座中抛出的问题,我正在寻找我创建的自定义视图控制器以外的东西。

于 2010-12-17T19:32:11.400 回答
0

如果 ParentViewController 的 type1ViewController 属性是用 Type1ViewController 类声明的,那么第一行应该是:

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

不是:

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

注意大小写。我实际上有点惊讶这个编译没有错误或警告。

于 2009-09-11T19:33:26.597 回答