我已经将UIView子类化并创建了一个NIB来控制我的应用程序的主要逻辑。
希望视图能够很好地扩展,我想将它用于iPhone和iPad版本的应用程序。
在iPhone上,视图将覆盖全屏。在iPad上,视图将仅覆盖屏幕的一部分。
我已经读过你不应该使用UIViewControllers来控制部分屏幕。所以,我试图使用IB将自定义UIView嵌入到主UIViewController的视图中。
如何做到这一点?
答案 0 :(得分:6)
经过大量的反复试验后,我找到了一个基于以下question中解释的方法的解决方案,由Brian Webster回答。
该解决方案最初是针对Cocoa环境而提出的。我希望它在iOS环境中也有效。
以下是一些代码:
MainViewController.h
@interface MainViewController : UIViewController {
CustomViewController *customViewController;
UIView *customView;
}
@property (nonatomic, retain) CustomViewController *customViewController;
@property (nonatomic, retain) IBOutlet UIView *customView;
@end
MainViewController.m
- (void)viewDidLoad {
CustomViewController *controller = [[CustomViewController alloc] initWithNibName:@"CustomViewController" bundle:nil];
self.customViewController = controller;
[controller release];
customViewController.view.frame = customView.frame;
customViewController.view.autoresizingMask = customView.autoresizingMask;
[customView removeFromSuperview];
[self.view addSubview:customViewController.view];
self.customView = customViewController.view;
[super viewDidLoad];
}
答案 1 :(得分:1)
IBOutlet
属性到UIViewController,以及您希望访问的任何子视图的其他出口。-
[[NSBundle mainBundle] loadNibNamed:@"MyNib" owner:self options:0];
self.myCustomView.frame=self.view.bounds; // make view fill screen - customize as necessary
[self.view addSubview:self.myCustomView];
当您加载NIB时,您在步骤1中设置的插座将填充从NIB加载的对象。