我的方法是使用/創建不同的UIViewController子類爲每種2種演示文稿。他們經常可以分享一個共同的超類。這裏有一個例子:
@interface CMDetailsViewController : UIViewController
@end
@interface CMDetailsSinglePageViewController : CMDetailsViewController
@end
@interface CMDetailsPopoverViewController : CMDetailsViewController
@end
每個2類可以自定義一些在你的基類中定義的行爲。在你的情況下,它將是一個演示邏輯,我猜想它位於其中一種外觀方法(如-(void)viewWillAppear:(BOOL)animated
或替代)或-(void)viewDidLoad
。因爲你一定知道你呈現視圖控制器的方式:使用我們說的UINavigationController
(在iPhone上)或UIPopoverController
(在iPad上),你可以決定創建這兩個子類中的哪一個。
一般來說,這也是我在默認iOS應用程序時的默認方法。系統可讓您爲每個平臺定義2個不同的UIApplicationDelegates
,這意味着您可以使用適當的UIViewControllers
而不需要大量if-else用於檢查應用程序啓動的設備。
我有同樣的問題,但它看起來像沒有任何可靠的方式來做iOS 5.0的。所以我的解決方法是在控制器內添加一個BOOL屬性'popoverMode',並在popover中使用該控制器時將其設置爲true。 – adib 2011-11-06 07:34:11