我有一个应用程序需要用户登录。一旦用户登录,我想使用分割视图控制器来显示数据。诀窍是,苹果不希望我推动SplitViewController
,因为他们希望它成为根视图控制器。从我的角度来看,没关系,但我需要用户先登录。分割视图控制器不作为根视图控制器
任何人都知道任何解决方法除了创建我自己的SplitViewController
-like VC?
我有一个应用程序需要用户登录。一旦用户登录,我想使用分割视图控制器来显示数据。诀窍是,苹果不希望我推动SplitViewController
,因为他们希望它成为根视图控制器。从我的角度来看,没关系,但我需要用户先登录。分割视图控制器不作为根视图控制器
任何人都知道任何解决方法除了创建我自己的SplitViewController
-like VC?
如果需要,仍然可以更改根视图控制器。您最初可以设置根视图控制器来显示您的登录屏幕,然后用分割视图控制器替换它。或者,您可以在分屏视图控制器的顶部以模态形式呈现登录屏幕。
UISplitViewController *svc = (UISplitViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"SplitView"];
[self presentModalViewController:svc animated:YES];
假设使用的是故事板,并已给出的拆分视图控制器的标识符(SPLITVIEW)
您可以随时添加一个虚设的viewController和上推dummyView控制器的SPLITVIEW控制器,然后推DummyView控制器在你目前的视图控制器的顶部,例如
AppDelegate *appdelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
self.splitViewController.delegate = detailViewController;
UIViewController *dummyView = [[UIViewController alloc]init];
[dummyView.view addSubview:self.splitViewController.view];
[appdelegate.rootNavigationController setNavigationBarHidden:YES animated:NO];
[appdelegate.rootNavigationController pushViewController:dummyView animated:YES];
LOL!看起来不错,什么hack哈哈:-) – Michal
这帮助我(通过Xamarin):
public override bool ShouldPerformSegue (string segueIdentifier, NSObject sender)
{
if (segueIdentifier != ReportSettingsSegue)
return base.ShouldPerformSegue (segueIdentifier, sender);
bool isOk = ProcessLogin();
var svc = (ReportSplitViewController)Storyboard.InstantiateViewController ("ReportSplitViewController");
View.Window.RootViewController = svc;
return isOk;
}
Segue公司按 “登录” 我的应用程序的第一个屏幕上的按钮后执行。
你也必须在故事板中的身份检查器中设置分割控制器识别ID(故事板ID)(对我来说是ReportSplitViewController)
这是一个不错的主意,但是从iOS8上并起来,在上面没有按呈现出新的画面看起来不是'即时'的,所以它会告诉你一段时间的分屏,然后登录到顶端,这只是计划的丑陋。 –