我正在深入研究iOS开发,我正在尝试创建一个使用拆分视图布局的iPad应用程序,而不使用UISplitViewController。我发现this question已经发布了,但它太模糊了,无法帮助我掌握目前的iOS体验。
简而言之,我有一个名为MySplitViewController的UIViewController类,它包含两个子视图控制器,一个用于主视图,另一个用于详细视图。我试图以一种方式实现这一点,当我将MySplitViewController的一个实例推送到导航堆栈时,我在左边得到一个表视图(master),在左边得到一个详细视图。但是,当我运行我的代码时,整个拆分视图都填充了表视图。如何手动创建拆分视图布局?这是我的三个视图控制器类,它们非常简单......
MySplitViewController.m
#import "MySplitViewController.h"
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface MYSplitViewController (){}
@property (nonatomic, strong) MasterViewController *masterViewController;
@property (nonatomic, strong) DetailViewController *detailViewController;
@end
@implementation MySplitViewController
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
self.masterViewController = [[MasterViewController alloc] initWithNibName:nil bundle:nil];
self.detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame = CGRectMake(0, 0, 768, 1004);
[self.view addSubview:self.masterViewController.view];
[self.masterViewController viewDidLoad];
[self.view addSubview:self.detailViewController.view];
[self.detailViewController viewDidLoad];
}
@end
MasterViewController.m
#import "MasterViewController.h"
@interface MasterViewController ()
@end
@implementation MasterViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 1004) style:UITableViewStylePlain];
table.dataSource = self;
table.delegate = self;
[self.view addSubview:table];
}
@end
DetailViewController.m
#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
UIView *uiview = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 668, 1004)];
[self.view addSubview:uiview];
}
@end
我不理解什么?
非常感谢您的智慧!
P.S。值得注意的是为什么我没有使用UISplitViewController。我的应用程序目前正在设计中,以便根视图不是拆分视图。我的应用程序的根视图将导致拆分视图被推送到导航堆栈。这个问题是UISplitViewController被设计成应用程序的根视图,Apple的文档特别说如果你使用UISplitViewController它需要是根视图。因此,我正在实现自己的拆分视图并手动管理视图。
答案 0 :(得分:1)
您可能想尝试基于UIViewController的MGSplitViewController ..并允许推.. MGSplitViewController
答案 1 :(得分:1)
也许考虑以不同的方式显示您的根视图可以帮助您。例如:使用UISplitViewController
作为根视图,并使用当前的根视图在其上方显示模态视图。因此,您使用当前的根视图和UISplitViewController
。