如何在ipad编码中将splitview添加到我的基于视图的应用程序中

时间:2011-12-22 09:32:23

标签: iphone objective-c ios ipad uisplitviewcontroller

我使用基于视图的应用程序启动了我的iPad应用程序。 在前两个视图中我添加了表视图。 现在作为第三个视图我想将splitView添加到视图中,为此我将splitview控制器添加到我的xib文件中。我怎么写编程部分。 请使用完整的链接或源代码。

I am using view based class like as follows:
- (void)viewDidLoad
{
    [super viewDidLoad];

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

我在哪里实现代码? 提前致谢。

3 个答案:

答案 0 :(得分:2)

如果要切换到splitview控制器,则需要分配/初始化它,然后需要将windows根视图控制器设置为splitview控制器。

例如,在我的应用程序中,我有一个主视图,当用户点击按钮时,我切换到了分割视图。要切换到splitview控制器,我使用以下代码。

获取对您的应用代表的引用

MainAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

分配并初始化你的splitview控制器,所以对于我的例子,左边有一个部分列表控制器,右边有一个部分细节控制器:

SectionListViewController *sectionListVC = [[SectionListViewController alloc] init];
SectionViewController *sectionVC = [[SectionViewController alloc] init];

UISplitViewController *splitVC = [[UISplitViewController alloc] init];
splitVC.viewControllers = [NSArray arrayWithObjects:sectionListVC, sectionVC, nil];

appDelegate.window.rootViewController = splitVC;

[sectionListVC release];
[sectionVC release];
[splitVC release];

答案 1 :(得分:1)

据我所知,拆分视图控制器你必须创建新的基于分割视图的应用程序,或者你必须通过编程实现。为此你需要创建一个主视图控制器,它包含splitview和一个没有nib文件的表视图控制器,并包含表视图控制器添加一个显示详细信息的视图控制器

在主控制器中写下以下代码
实现代码如: 在.h页面

 UISplitViewController *splitViewController;
@property (nonatomic, retain) IBOutlet LeftViewController *left;
@property (nonatomic, retain) IBOutlet DetailViewController *right;
<。p>在.m页面

   // Do any additional setup after loading the view from its nib.
left = [[LeftViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *leftNav = [[UINavigationController alloc] initWithRootViewController:left];
right = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
UINavigationController *rightNav = [[UINavigationController alloc] initWithRootViewController:right];
left.detail = right;

splitViewController = [[UISplitViewController alloc] init];    
splitViewController.viewControllers = [NSArray arrayWithObjects:leftNav,rightNav, nil];
splitViewController.delegate = right;
self.view = splitViewController.view;

[left release];
[right release];

在viewDidLoad中编写的所有启动方法都不在viewWillAppear

答案 2 :(得分:1)

SplitViewController必须是RootViewController。来自Apple Docs:

“拆分视图控制器必须始终是您创建的任何接口的根。换句话说,您必须始终从aUISplitViewController对象安装视图作为应用程序窗口的根视图。拆分视图界面的窗格可能然后包含导航控制器,标签栏控制器或实现界面所需的任何其他类型的视图控制器。“

因此,如果不编写自己的容器视图(在iOS5中)而不是使用Apple的SplitViewController,则无法执行您想要的操作。