5

我使用Split View-based Application模板創建了一個新的應用程序。UISplitViewController中的ActionSheet在縱向模式中的行爲與橫向模式不同

然後我添加了一個動作按鈕到rootViewController導航控制器,名爲actionButton。

當按下按鈕時,我顯示像這樣的ActionSheet:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
    delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil 
    otherButtonTitles:@"Admin Functions", @"Refresh Data", nil]; 
[actionSheet showFromBarButtonItem:actionButton animated:YES]; 
[actionSheet release]; 

後我按下按鈕時在橫向模式下它顯示的操作片材,其中所指向的按鈕酥料餅(如我預計它):

Landscape Mode

然而,在人像模式,它看起來完全不同的菜單從RootViewController的酥料餅就像它在iPhone上的底部出現:

Portrait Mode

我的問題是,如何讓我的ActionSheet出現在頂部,而在縱向模式,就像它在橫向模式時?

由於這是一個「實用程序菜單」,它並不直接與顯示的數據綁定,所以它不應該是popover的一部分。

回答

3

此行爲是有意設計的,如果它是縱向模式下的彈出窗口,那麼您將有2級彈出窗口。

通過實施您自己的UIPopover版本或使用已經寫好的人(WEPopover),這在技術上是可行的。

但是,這是一個糟糕的設計選擇。你說這些功能與數據無關,但是有一種是「刷新數據」。我會刷新圖標替換操作按鈕,如一個蘋果在使用「查找我的朋友」:

Refresh Button

另外,「管理功能」,如果不直接相關的數據列表,也許需要一個新的家,也許你的應用程序的主要觀點?很難說在不知道更多關於結構的情況下最好放在哪裏。

+0

感謝您的回覆!不幸的是,我展示的圖片只是模型,只是簡單地展示它正在做什麼,具體行爲是不同的。實際應用與郵件應用非常相似,左側視圖顯示列表,右側視圖顯示詳細信息。由於菜單項作爲一個整體(而不是細節項)引用應用程序,所以我覺得它屬於左視圖。這個頁面是我的應用程序的主視圖,所以我需要找到放置菜單項的地方。由於菜單上有5-6個項目,因爲房間有限,所以它確實需要作爲下拉菜單。 – lnafziger

+0

問題依然存在,您有兩個級別的UIPopover(列表和菜單)。如果你願意避免在縱向模式下彈出列表,並且只存在於左側,我建議使用[MSSplitViewController](http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad /)而不是使用UISplitViewController。但是,如果不知道更多的應用細節,就很難設計出更好的行動方案。 –

+0

我想我可以使用模式而不是彈出窗口...... – lnafziger

0

另一種可能性是,您可以將操作按鈕從根視圖控制器的右側邊緣移動到細節視圖控制器的左側邊緣。

例如,如果動作按鈕位於第一個屏幕快照中垂直條右側(意思是它位於詳細視圖控制器欄的左側邊緣),那麼當您旋轉到縱向模式時,它會在第二個屏幕快照中的事件按鈕右側出現。您仍然可以調用UIActionSheet的showFromBarButtonItem:animated方法,該方法將以彈出模式顯示您的操作表。

還有一個問題,你是否真的想在屏幕上同時彈出兩個彈出窗口。但如果你這樣做,這是如何做到這一點。

+0

從適用於iOS的視圖控制器編程指南:「注意:在顯示其他視圖控制器之前,您應該始終關閉可見的彈出窗口。如何在應用程序中使用彈出窗口,請參閱iOS人機界面指南中的「Popover(僅限iPad)」。 –

相關問題