18

UIActionSheet的Apple文檔引起了我的困惑。首先,在iPad人機界面指南,它說:在iPad上使用UIActionSheet

要了解更多有關在代碼中使用的動作片,請參閱「使用Popovers顯示內容的」 iPad編程指南中。

但是,在「使用Popovers來顯示內容」部分,它根本沒有提及動作表!我在這裏錯過了什麼嗎?

http://developer.apple.com/library/ios/#documentation/General/Conceptual/iPadHIG/UIElements/UIElements.html#//apple_ref/doc/uid/TP40009446-CH6-SW9

我的主要問題是:在iPad上,是什麼UIPopoverController和UIActionSheet之間的區別?如果UIActionSheet在UIPopoverController中自動呈現,是否有任何理由使用UIActionSheet?我看到它的委託和自動創建按鈕是如何減少代碼行的,但是從可用性POV來看,它們有什麼不同嗎?

此外,顯示我的actionSheet動畫根本不工作。它的外觀和動作與沒有動畫的actionSheet完全相同(與我僅僅使用UIPopoverController並且完全沒有actionSheet完全相同)。這裏是我的代碼:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:" 
    delegate:self 
    cancelButtonTitle:nil 
    destructiveButtonTitle:@"Overwrite" 
    otherButtonTitles:@"Open unsaved property", nil]; 

[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO]; 

我怎麼會得到看起來像樣品動畫actionSheet蘋果的文檔中(從地圖應用程序,在其中添加一個位置,聯繫人)的actionSheet?

我可能會最終使用警報而不是彈出窗口或actionSheet,但它對理解這一點仍然有用。

謝謝!

回答

22

首先,UIActionSheet存在於UIPopoverController之前,UIPopoverController在iPhone上不可用,所以它對於向後兼容性和通用應用程序很有用。

另外,UIActionSheet不一定會出現在彈出式窗口中,具體來說,如果您從彈出窗口中已有的UIBarButtonItemUIToolbar中顯示它。然後以與iPhone上類似的方式呈現它(從視圖控制器的底部滑入)。根據HIG,必須不同時呈現多個popovers(I曾經拒絕一個應用程序),所以在情況下的視圖控制器可以是酥料餅的內部(如在標準的拆分視圖應用)時,可能如果可能的話,希望使用操作表。當然,在很多情況下,您無法用動作表替換彈出窗口,因爲動作表僅顯示按鈕和標題列表,而彈出窗口可以顯示任何視圖控制器。

我認爲animated參數僅在「經典」(如在iPhone上)方式中呈現操作表時才起作用。

+2

+1爲您的答案。很有用!你說過*當然有很多情況下你不能用動作表替換彈出窗口,因爲動作表只顯示一個按鈕和一個標題列表,而彈出窗口可以顯示任何視圖控制器。*。所以,無法呈現日期選取器,我是否錯了?謝謝。 – 2012-06-26 11:29:33