Ios SplitViewController演示带手势解决方案-最佳解决方案?

Ios SplitViewController演示带手势解决方案-最佳解决方案?,ios,uisplitviewcontroller,ios5.1,Ios,Uisplitviewcontroller,Ios5.1,我的主要开发机器运行雪豹(因此,只有iOS5.0SDK)和运行Lion(和5.1SDK)的笔记本电脑。希望我有一个简单的解决方案,能够在雪豹机器上开发5.1,但这是一个次要问题 我正在学习UISplitViewControllers,希望有一个滑动手势来更改细节视图控制器中显示的内容。实现了这一点,但在5.1中,有一个名为PresentSwith手势的属性,在您滑动该方向时显示masterViewController 您可以禁用它,但我的5.0计算机会给我一个错误,即UISplitViewCon

我的主要开发机器运行雪豹(因此,只有iOS5.0SDK)和运行Lion(和5.1SDK)的笔记本电脑。希望我有一个简单的解决方案,能够在雪豹机器上开发5.1,但这是一个次要问题

我正在学习UISplitViewControllers,希望有一个滑动手势来更改细节视图控制器中显示的内容。实现了这一点,但在5.1中,有一个名为PresentSwith手势的属性,在您滑动该方向时显示masterViewController

您可以禁用它,但我的5.0计算机会给我一个错误,即UISplitViewController没有名为PresentedWith手势的属性(对于5.0是正确的)

if ([splitViewController respondsToSelector:@selector(presentsWithGesture:)]) {
    //edited away from dot syntax
    [splitViewController setPresentsWithGesture:NO];
}
叹息。。。所以我想我应该测试一下,但是以下几点:

if (self.splitViewController.presentedViewController) {
    self.splitViewController.presentsWithGesture = NO;
}
。。。还是给了我那个错误。有没有一个聪明的方法来解决这个问题?有些声音在我脑后说“分类”,但我不知道从哪里开始


提前感谢您的帮助。

您应该询问splitViewController是否可以接收到PresentSwith手势消息

if ([splitViewController respondsToSelector:@selector(presentsWithGesture:)]) {
    //edited away from dot syntax
    [splitViewController setPresentsWithGesture:NO];
}
请记住,这是一个代码块,用于与可能未使用与您链接的iOS版本相同的用户一起工作。您遇到的问题正好相反,因为您正在两个单独的设备上为同一个项目编写代码,每个设备都有不同的基本SDK


编辑:请参见此处

您应该询问splitViewController是否可以接收消息PresentSwith手势

if ([splitViewController respondsToSelector:@selector(presentsWithGesture:)]) {
    //edited away from dot syntax
    [splitViewController setPresentsWithGesture:NO];
}
请记住,这是一个代码块,用于与可能未使用与您链接的iOS版本相同的用户一起工作。您遇到的问题正好相反,因为您正在两个单独的设备上为同一个项目编写代码,每个设备都有不同的基本SDK


编辑:请参见此处

这是检查
UISplitViewController
是否具有
presentsWithGestureProperty
的方法:

if ([m_splitVC respondsToSelector:@selector(setPresentsWithGesture:)])
    [m_splitVC setPresentsWithGesture:NO];

在iOS 5.1中,它将设置属性,而在以前的版本中,它将不输入if语句。

这是检查
UISplitViewController
是否具有
presentsWithGestureProperty

if ([m_splitVC respondsToSelector:@selector(setPresentsWithGesture:)])
    [m_splitVC setPresentsWithGesture:NO];

在iOS 5.1中,它将设置属性,而在以前的版本中,它不会输入if语句。

这基本上就是我在代码中所做的。您的方式更标准(更好),但它无法解决错误标志。我仍然得到:错误:语义问题:在“UISplitViewController*”类型的对象上找不到属性“presentswith手势”,谢谢您的努力,但我得到了完全相同的错误。我相信点语法只是访问setter的一种方式,但我之前也尝试过这种变体,以防万一。通过使用实际的setter方法,您应该只得到一个编译器警告,即UISplitViewController可能不会响应消息presentswith手势。可能您的项目设置将警告视为错误。否。我的项目不是这样设置的。我觉得如果你在铸造一个ID或其他东西,你会得到这些温和的警告。我更新了我的答案,并链接到另一个关于在SLS中使用XCode 4.2和iOS 5.1的问题,这基本上就是我在代码中所做的。您的方式更标准(更好),但它无法解决错误标志。我仍然得到:错误:语义问题:在“UISplitViewController*”类型的对象上找不到属性“presentswith手势”,谢谢您的努力,但我得到了完全相同的错误。我相信点语法只是访问setter的一种方式,但我之前也尝试过这种变体,以防万一。通过使用实际的setter方法,您应该只得到一个编译器警告,即UISplitViewController可能不会响应消息presentswith手势。可能您的项目设置将警告视为错误。否。我的项目不是这样设置的。我觉得如果你在铸造一个ID什么的,你会得到这些温和的警告。我更新了我的答案,并链接到了另一个关于在SL中使用XCode 4.2和iOS 5.1的问题