2011-08-24 103 views
2

我正在創建彈出對話框(UIAlertView)。它的效果很好,除了我需要從19個項目中選擇,並且按鈕不會自動滾動,只有五個適合屏幕。帶19個按鈕的UIAlertView

那麼,我可以讓他們滾動嗎?如果沒有,我可以將UIPickerView置於警報視圖中嗎?或者,還有更好的方法?

到目前爲止的代碼:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Provider" 
               message:@"Please choose your provider:" 
               delegate:self 
             cancelButtonTitle:nil 
             otherButtonTitles:@"AT&T",@"Verizon",@"Sprint",@"Nextel",@"T-Mobile",@"Alltel",@"US Cellular",@"Virgin Mobile",@"Metro PCS",@"Boost Mobile",@"Cricket",@"Rogers(Can)",@"Telus(Can)",@"Bell Mobility(Can)",@"Fido",@"Virgin(Can)",@"O2",@"Vodaphone",@"Meteor", nil]; 
[alert show]; 
[alert release]; 
+4

這是一個可用性*噩夢*。 19個按鈕?!你是不是瘋了?? –

回答

2

你可能會考慮使用UIActionSheet代替。當你有很多物品時它會自動滾動。

+2

當然,它會滾動,但它仍然是這樣的東西錯誤的UI元素。他沒有執行任何操作,他希望用戶選擇一些東西。因此,他應該使用更適合挑選的控件,如「UIPickerView」或「UITableView」。 –

+0

好吧,那麼我該如何將一個UIpickerView放入一個alertview中或者彈出某種類型或者以相同方式工作呢?我無法在蘋果文檔中看到它像彈出窗口一樣工作。 – Rick

+0

不,它不會以這種方式工作,它會從屏幕底部滑動。如果你不希望你應該選擇另一種選擇。 – jtbandes

2

不要創建19個按鈕。相反,請使用UIPickerView

+0

選取器...對不起,這是我的意思是微調。但是你可以把它放在UIAlertview中嗎? – Rick

+1

@Sabanim警報視圖用於警報。從列表中選擇一個項目不是一個警報。那麼在視圖控制器中以模態方式呈現它呢? –

1

通常,使用UIActionSheet或某種模態視圖。

在這種特殊情況下,您可以使用CoreTelephony framework。 CTCarrier有一個屬性carrierName,應該返回類似於你所要求的東西(只要設備連接到蜂窩網絡)。

+0

是的。我相信這會返回當前連接的網絡。所以如果你有verizon但是連接到alltel塔,它會返回alltel而不是verizon,verizon是我需要的。這是第一個解決方案的選擇,但它不適用於這種情況。謝謝 – Rick

+0

@Sabanim:請參閱鏈接文檔:「如果用戶正在漫遊,則價值不會改變;它始終代表用戶擁有賬戶的提供商」。 'carrierName'的主要缺點是,如果設備處於飛行模式或沒有服務,它將返回nil。 – Anomie