Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 9拆分视图应用程序大小调整策略_Ios_Objective C_Ipad_Splitview - Fatal编程技术网

iOS 9拆分视图应用程序大小调整策略

iOS 9拆分视图应用程序大小调整策略,ios,objective-c,ipad,splitview,Ios,Objective C,Ipad,Splitview,我有一个应用程序,我想在其上启用拆分视图。iPhone与iPad的用户界面略有不同(紧凑型与常规宽度) 在压缩宽度模式下,我有一个UITableView,其中包含用户可以选择的项目列表,当用户选择时,我会将一个新的视图控制器推到导航堆栈上。但是,在常规宽度中,UITableView列表显示在左侧,然后在右侧显示一些其他视图(未在UISplitViewController中实现)。所以我在两个不同的ViewController类中实现了这两个不同的屏幕 如果我的用户使用的是固定宽度的iPad,然后

我有一个应用程序,我想在其上启用拆分视图。iPhone与iPad的用户界面略有不同(紧凑型与常规宽度)

在压缩宽度模式下,我有一个UITableView,其中包含用户可以选择的项目列表,当用户选择时,我会将一个新的视图控制器推到导航堆栈上。但是,在常规宽度中,UITableView列表显示在左侧,然后在右侧显示一些其他视图(未在UISplitViewController中实现)。所以我在两个不同的ViewController类中实现了这两个不同的屏幕

如果我的用户使用的是固定宽度的iPad,然后使用我的应用程序进入分割视图,并导致应用程序更改为压缩宽度,那么我需要更改向用户显示的ViewController。这方面的最佳策略是什么

注意:我没有使用故事板


谢谢

有两种方法可以解决这个问题。首先,您可以看一看,特别是关于折叠和扩展接口的部分

另一个解决方案是覆盖你的尺寸集合,这样iPhone和iPad上的显示是一样的,因为在没有折叠和展开的情况下,两个视图总是“在那里”。您可以将分割视图控制器的
首选显示模式
设置为覆盖,这在iPhone上看起来很不错。您只需添加

UITraitCollection* horizTrait = [UITraitCollection
                                 traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
UITraitCollection* vertTrait = [UITraitCollection
                                traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
UITraitCollection* childTraits = [UITraitCollection
                                  traitCollectionWithTraitsFromCollections:@[horizTrait, vertTrait]];

[self setOverrideTraitCollection:childTraits forChildViewController:self.childViewControllers[0]];
到您的
UISplitViewController的父类(如果没有父类,则必须创建一个。这可以只是一个简单的导航控制器)


编辑:我应该提到,上面的代码只是将所有设备的特征设置为正则

感谢您的回复。我在想也许我应该使用状态恢复,但是根据我的特征集合恢复不同的视图控制器

相反,我想我只需要创建一个视图控制器容器,然后在willLayoutSubviews中,我将根据当前视图的特征集合决定要显示哪些视图控制器


谢谢

听起来就像是设计用来处理