我正在构建我的第一个iPad应用程序。我的需求之一就是处理UISplitviewcontroller和UINavigationController。
我们建议的视图层次结构是
(LoginView) ->UINavigationView(LandingView + CollectionView)->UISplitViewcontroller( DetailsView)。
我们的应用程序仅支持横向模式
我指的是这个SO Question(以及镀金应用程序),作为一个新手,我很难根据这个描述完成它。
所以我的问题是
1)如果有人可以给出小代码片段或教程参考,我如何实现同样的事情
2)根据苹果HIG,UISplitviewcontroller应该是根视图控制器,如果不是怎么办。苹果会拒绝我的应用吗?(显然GILT group已经被批准了)
3)我找到了MGSplitViewController,我能不能不用它作为根?
任何帮助都将不胜感激。作为一个新闻记者,我希望我的问题是真实的。
发布于 2010-10-12 16:31:18
如果你想使用开箱即用的splitView it ,它必须是根的;这里的任何欺骗都会破坏苹果的指导方针,或者表现出非常奇怪的行为。
MGSplitViewController完全是SplitViewController的自定义实现。这是非常好的,如果你需要这类东西,但一些功能是基于这一事实,我们的应用程序将定向。
或者,你也可以自己制作。我已经做过不止一次了,而且比听起来容易。
(LoginView) ->UINavigationView(LandingView + CollectionView)->UISplitViewcontroller( DetailsView)。
基于开箱即用的UISplitView,我建议:
Dave确实有一个观点,但我会从你的角度来看,你正在删除用户的方向选择;删除标准选择(如支持的方向),因为设计人员假设某些配置更有效,只会惹恼一些用户。
发布于 2010-10-17 20:19:39
我是通过在我的detailViewController中创建一个方法来实现的
-(void)popHomeScreen:(BOOL)animated//OPENS THE HOMESCREEN IN A MODAL DISPLAY
{
firstRun=NO;
//myViewControllerForPopOver init here
myViewControllerForPopOver.modalPresentationStyle = UIModalPresentationFullScreen;
myViewControllerForPopOver.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;//simple anime
if (animated) [self presentModalViewController:myViewControllerForPopOver animated:YES];
else [self presentModalViewController:myViewControllerForPopOver animated:NO];
}然后在detailViewControllers ViewDidAppear方法中调用它:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if(firstRun)[self popHomeScreen:NO];
}
//YOU WILL ALSO NEED TO MAKE 'firstRun=YES' in viewDidLoad
//firstRun is a BOOL至于根消失(留下一个很大的黑色空间),..thats是一个已知的bug。虽然我想了一段时间,这是因为在动画要自动绘制之前订购了一个动画。
此外,我发现如果我在splitView上弹出一个全屏模式,然后很快弹出另一个基于表单的模式(例如),那么全屏模式就不能正确绘制。
SplitViews就像你的婆婆,你并不是真的喜欢他们,当你不得不使用他们的时候,你不得不小心翼翼地绕过地雷。
发布于 2012-06-19 15:48:55
试试这个,它对我很有效。
1)在应用代理的didFinishLaunchingWithOptions中,将您的登录视图设置为根视图
self.window.rootViewController = self.loginViewController; 同样,像模板一样初始化拆分视图(但不是添加到self.window)
MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil] autorelease];
UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
DetailViewController *detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil] autorelease];
UINavigationController *detailNavigationController = [[[UINavigationController alloc] initWithRootViewController:detailViewController] autorelease];
self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController ,detailNavigationController, nil];2)在app的委托中添加一个交换视图控制器,将根视图交换为拆分视图控制器。
-(void)swapToViewControllers:(RootViewControllerType)viewType
self.window.rootViewController = self.splitViewController; 3)在登录视图中调用swapToViewControllers。
https://stackoverflow.com/questions/3909349
复制相似问题