我有一个需要用户登录的应用程序。用户登录后,我想使用拆分视图控制器来显示数据。诀窍是,Apple 不希望我推送SplitViewController
,因为他们希望它成为根视图控制器。从我的角度来看,没关系,但我需要用户先登录。
除了创建我自己的SplitViewController
类似 VC之外,任何人都知道任何解决方法吗?
我有一个需要用户登录的应用程序。用户登录后,我想使用拆分视图控制器来显示数据。诀窍是,Apple 不希望我推送SplitViewController
,因为他们希望它成为根视图控制器。从我的角度来看,没关系,但我需要用户先登录。
除了创建我自己的SplitViewController
类似 VC之外,任何人都知道任何解决方法吗?
UISplitViewController *svc = (UISplitViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"SplitView"];
[self presentModalViewController:svc animated:YES];
假设您正在使用情节提要,并为拆分视图控制器提供了一个标识符 (SplitView)
您始终可以添加一个虚拟 viewController 并将 splitView 控制器推送到 dummyView 控制器上,然后将 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];
这对我有帮助(通过 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)
如果需要,您仍然可以更改根视图控制器。您最初可以将根视图控制器设置为显示您的登录屏幕,然后将其替换为拆分视图控制器。或者,您可以模态地在拆分视图控制器的顶部显示您的登录屏幕。