这种方式有效:

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


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

最佳答案

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

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

关于iphone - iPhone Cocoa“错误:要求成员____使用非结构或联合的东西”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/902710/

10-12 05:40