Wen*_* Hu 6 objective-c ipad uisplitviewcontroller ios8
所有,
我在IOS8 for iPad中遇到了新的UISplitViewcontroller问题.我在detailViewcontroller的storyboard中有一个UITableView,在单击单元格时,我应该转到另一个名为"detailinfo"的视图.我目前正在使用"show"segue.
然而,目前的segue只是推动了正确的部分.我想它显示全屏,但我不知道如何制作它,我尝试使用splitViewController的preferredDisplayMode属性,结果是它只是隐藏主视图但没有调整detailView的大小.我不想用礼物作为模态.
目前我正在做的方式是
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([[segue identifier]isEqualToString:@"showStudentDetail"]){
if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){
UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController;
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在viewDidAppear中使用
- (void)viewDidAppear:(BOOL)animated {
if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){
UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController;
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
}
}
Run Code Online (Sandbox Code Playgroud)
这将工作,但masterViewController将"跳出"具有非常糟糕的视觉效果.希望可以得到任何帮助,谢谢
UISplitViewController是一个复杂的视图控制器,由两个子视图控制器组成。因此,当您使用添加到任何子视图控制器的某些 Segue 时,您会要求子视图控制器执行 Segue。这个子视图控制器对活动窗口有部分控制。
在您的情况下,您需要要求分割视图控制器执行segue。因此,您应该将 Segue 添加到处理活动窗口的分割视图控制器中。这样您将拥有全屏选项。
更新
如果您不想使用当前作为模态并希望避免“跳出”效果,您可以使用动画隐藏母版
UISplitViewController *splitViewController = [self splitViewController];
[UIView animateWithDuration:0.25 animations:^{
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
} completion:^(BOOL finished) {
[splitViewController showDetailViewController:vc sender:nil];
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |