我正在尝试创建一个包含三个具有不同视图控制器(UICollectionViewController
和pageviewcontroller
)uiviewcontroller
的子视图的视图。我可以添加一个uiviewcontroller
但其他两个控制器是不允许的。我收到这个错误......
不兼容的指针类型将“UICollectionView *__weak”发送到“UIViewController *”类型的参数
他们有什么方法可以将这些控制器添加到我的子视图中吗?
我正在尝试创建一个包含三个具有不同视图控制器(UICollectionViewController
和pageviewcontroller
)uiviewcontroller
的子视图的视图。我可以添加一个uiviewcontroller
但其他两个控制器是不允许的。我收到这个错误......
不兼容的指针类型将“UICollectionView *__weak”发送到“UIViewController *”类型的参数
他们有什么方法可以将这些控制器添加到我的子视图中吗?
我不知道你为什么要在视图中添加 ViewController,我从不需要它。我试着这样做,如果可以帮助你这是我的运行代码:
视图控制器.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (nonatomic, retain) UICollectionViewController *collectionViewController;
@property (nonatomic, retain) UIPageViewController *pageViewController;
@property (nonatomic, retain) UIViewController *simpleViewController;
@end
视图控制器.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize collectionViewController;
@synthesize pageViewController;
@synthesize simpleViewController;
- (void)viewDidLoad
{
[super viewDidLoad];
UICollectionViewLayout *layout = [[UICollectionViewLayout alloc] init];
collectionViewController = [[UICollectionViewController alloc] initWithCollectionViewLayout:layout];
pageViewController = [[UIPageViewController alloc] init];
simpleViewController = [[UIViewController alloc] init];
// Do your stuff with this controllers
[self.view addSubview:collectionViewController.view];
[self.view addSubview:pageViewController.view];
[self.view addSubview:simpleViewController.view];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
您不会将视图控制器添加到视图中。您将视图添加到视图(作为子视图),并且很少将控制器添加到控制器(作为子控制器)。
将它们视为两个并行的层次结构:鉴于ControllerA
控件 view ViewA
,您希望创建ControllerB
一个子控制器ControllerA
,使其 viewViewB
是ViewA
.
请参阅WWDC 2011 视频:“实施 UIViewController 遏制”