2012-05-08 185 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,將設置屬性,並在以前的版本中,它不會進入如果聲明。