在iPad SplitView应用程序中,Master是一个表,选择Master行会更改Detail窗格(有点像Settings)。我已经有一段时间了。但设计变得拥挤,我正在拆分故事板,将每个详细信息场景放在自己的故事板中。
现在我可以加载详细故事板并为他们构建一个合成的Segue而没有任何问题。后:
destVC = [otherStoryBoard instantiateViewControllerWithIdentifier:VC_IDENTIFIER];
我调用此方法(它在自定义的UISplitViewController实例中也是SV委托):
- (void) segueToVC: (UIViewController*) destVC fromSender: (id) sender
{
if (destVC) {
// Let destVC approve before proceeding
if ([destVC shouldPerformSegueWithIdentifier:SEGUE_ID sender:sender]) {
// get current DetailVC from the split view
UINavigationController* detailVC =
(UINavigationController*)[self.viewControllers lastObject];
// Carry any Popover button into the destination viewcontroller
destVC.navigationItem.leftBarButtonItem = self.rootPopoverButtonItem;
// setup a synthetic Segue to accomplish the transfer
UIStoryboardSegue* aSegue = [UIStoryboardSegue segueWithIdentifier:SEGUE_ID
source: detailVC.topViewController
destination:destVC
performHandler:^(void) {
// Replace the Nav Stack - but without transition
detailVC.viewControllers = @[destVC];
}];
// give destination VC a chance to do any setup
[destVC prepareForSegue:aSegue sender:sender];
// Execute the segue
[aSegue perform];
}
}
}
它似乎可靠地工作,但它不提供任何过渡动画。我已经尝试在segue performHandler中更改为这一行:
detailVC.topViewController.navigationController pushViewController:destVC animated:YES];
但是(正如预期的那样)它会推动现有的导航堆栈,而不是像我需要的那样更换它。我也试过这个:
[detailVC.topViewController presentViewController:destVC animated:YES completion:^{}];
这确实进行了模态转换,但它取代了整个SplitView,而不仅仅是替换了Detail端。 (它在第二次调用后也会生成“VC不在视图层次结构中”异常)。
我想我可以建立自己的过渡动画,但我觉得我错过了一些更明显的东西。建议?谢谢!