2012-05-08 66 views
1

在我的主要开发机器运行雪豹(因此,只有iOS 5.0 SDK)的一个奇怪的设置上工作,并且还有一台运行Lion(和5.1SDK)的笔记本电脑。希望我有一个简单的解决方案能够在Snow Leopard机器上开发5.1,但这是一个侧面问题。SplitViewController presentedWithGesture解决方法 - 最佳解决方案?

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

您可以禁用它,但我的5.0机器给我一个错误说(正确为5.0),UISplitViewController没有名为presentWithGesture的属性。

唉...所以我想我会测试它,但以下几点:

if (self.splitViewController.presentedViewController) { 
    self.splitViewController.presentsWithGesture = NO; 
} 

...仍然给我的错误。有没有一个聪明的方法来解决这个问题?我脑海后面的一些声音说“类别”,但我不确定从哪里开始。

在此先感谢您的帮助。

回答

0

您应该询问splitViewController是否可以接收消息presentsWithGesture。

if ([splitViewController respondsToSelector:@selector(presentsWithGesture:)]) { 
    //edited away from dot syntax 
    [splitViewController setPresentsWithGesture:NO]; 
} 

请记住,这是一个代码块,用于处理可能未使用与您链接的iOS版本相同的用户。你遇到的问题恰恰相反,因为你在两个独立的设备上编写同一个项目的代码,每个设备都有不同的基础SDK。

编辑:看到这里Is it possible to get the iOS 5.1 SDK for Xcode 4.2 on Snow Leopard?

+0

这基本上是我在我的代码中做的。你的方式更标准(更好),但它不能解决错误标志。我仍然得到:错误:语义问题:Property'presentsWithGesture'没有找到对象类型'UISplitViewController *' –

+0

我更新了我的答案,试试。 – Justin

+0

感谢您的努力,但我得到了完全相同的错误。我相信点语法只是一种访问setter的方法,但我也尝试过这种方法,以防万一。 –

1

这是检查是否UISplitViewController的方式有presentsWithGestureProperty

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

在iOS系统5.1,将设置属性,并在以前的版本中,它不会进入如果声明。