gpt4 book ai didi

ios7 - UISplitViewController iOS 7 向后兼容性

转载 作者:可可西里 更新时间:2023-11-01 02:27:45 26 4
gpt4 key购买 nike

在 Xcode 6 中,我正在构建一个具有 UISplitViewController 的通用应用程序。在较小的 iOS 8 设备上,它看起来像是正常的主/从关系,但在较大的设备上,您会同时看到主视图和详细 View 。

这适用于 iOS 8,但我还需要它来支持 iOS 7。iOS 7 仅支持 iPad 的 UISplitViewController,而我目前将它用于 iPad 和 iPhone。

我怎样才能解决这个问题?

最佳答案

@macworth 正如 Jack 所说,这是可能的,但我不确定您是否可以通过代码做到这一点。但是,在使用 Storyboard 时,我也遇到了问题(出现相同的“仅在 UIUserInterfaceIdiomPad 下运行时受支持”异常)。在咬牙切齿之后,我发现这是因为我使用的是一个旧的 xcode 导入项目,并且没有为 Storyboard启用 Use Sizes Classes 复选框。启用后,xcode 升级了项目,并且运行良好。

我还必须进行一些调整以处理使用导航 Controller 而不是 Split View Controller 的情况。特别是,在默认的 xcode Split View Controller 项目中,我必须对 prepareForSeque() 进行以下 #if 1' 更改:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDate *object = self.objects[indexPath.row];

#if 1
DetailViewController *controller = nil;
if ([segue.destinationViewController isKindOfClass:[UINavigationController class]]) {
controller = (DetailViewController*)[segue.destinationViewController topViewController];
}
else if ([controller isKindOfClass:[UISplitViewController class]]) {
controller = segue.destinationViewController;
}
#else
DetailViewController *controller = (DetailViewController*)[[segue destinationViewController] topViewController];
#endif
[controller setDetailItem:object];
controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
controller.navigationItem.leftItemsSupplementBackButton = YES;
}
}

关于ios7 - UISplitViewController iOS 7 向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26059388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com