追加按鈕的功能!
注意!只要在你連接方法到介面上之後你還要修改方法,那你一定要重新連接!首先注意,我們要讓ViewController類採用一個協議,叫做UIActionSheetDelegate。
我們要使用一個類,叫做
UIActionSheet。這個類是做什麼的呢?可以參考一下蘋果的手冊:
使用這個類,可以給使用者一組選擇項目,去進行給定的任務。你可以用action sheet告訴使用者正進行有潛在危險的動作。這個action sheet包含一個可更動的title和一個或一個以上的按鈕,每一個按鈕都對應一個可以採取的動作。
在把這些呈現出來之前,使用這個類的properties和方法去配置action sheet的訊息、style和按鈕,以及指定delegate給你的action sheet。當按鈕被點擊時,你的delegate物件應負責執行該按鈕對應的action而且應遵守
UIActionSheetDelegate協議。可以參考
UIActionSheetDelegate Protocol Reference 去看更多有關實作delegate的方法的資訊。你可以從工具欄,標籤欄,按鈕欄項目,或從一個視圖提出一個action sheet。當要決定如何呈現action sheet時,這個類會將starting view和目前的plateform列入考慮。當應用程式在iphone和iPod touch上運行時,action sheet通常會從擁有這個view的視窗底部往上滑起,當在iPad上運行時,action sheet會以popover的樣子呈現在螢幕上,以適當方式定錨在starting view上。點觸popover外的部份可以移開action sheet,就像是在自定義按鈕內輕觸一樣,你也能編程的關閉它。
當在iPad上呈現action sheet時,有時是不用設置取消按鈕的。如果你只是呈現action sheet,系統不會使用動畫去在popover內顯示action sheet。因為在popover外輕觸可以在不選擇item的情況下退掉action sheet,在預設情況下這會導致取消sheet。因此若設置取消按鈕,這只會導致混淆。然而,如果你有一個已存在的popover並且正用動畫在其他內容上面顯示一個action sheet,還是要有個取消按鈕比較好。可以參考 iOS Human Interface Guidelines。
initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:
使用指定的起始參數初始化action sheet。
- (id)initWithTitle:(NSString *)title
delegate:(id < UIActionSheetDelegate >)delegate
cancelButtonTitle:(NSString *)cancelButtonTitle
destructiveButtonTitle:(NSString *)destructiveButtonTitle
otherButtonTitles:(NSString *)otherButtonTitles, ...
參數介紹:
title:顯示在action sheet的title部分,如果你不想顯示任何東西,你也可以設定成nil。
delegate:接受者的delegate物件。雖然也可以設定成nil,但delegate通常會響應action sheet中的觸擊,所以提供。
cancelButtonTitle:取消按鈕的title。 這個按鈕自動會倍加到action sheet內,並設定一個適當的index,這index 可由
cancelButtonIndex
property取得。這個按鈕以黑色顯示,表示它代表取消動作。如果你不要取消按鈕的話或是在iPad上呈現action sheet,那可以指定nil。
destructiveButtonTitle:破壞性按鈕的title。這個按鈕會自動被加到action sheet內,並且被指派一個適當的index,這個index可由
destructiveButtonIndex
property所取得。這個按鈕以紅色顯示,用來表示他代表一個破壞行為。如果你不想要破壞性按鈕,那你可以指定nil。
otherButtonTitle:為你想要加入的按鈕的title。這個參數包含了一個
以nil結尾,以逗號區隔的一列字串。舉例來說,如果你要指明兩個額外的按鈕,你可以寫
@"Button 1", @"Button 2", nil。
以上是參考蘋果的手冊。
接下來注意,要更改code:
-(IBAction)mainControlSwitched:(id)sender;
-(IBAction)switchChaneged:(id)sender;
-(IBAction)buttonPressed;
改好後:
-(IBAction)buttonPressed{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Want to see an alert?"
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:@"Yes, lets see it"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
}
注意delegate設定是self,這只是讓delegate物件是在這個類裡面。
好,下一堂課繼續!
留言
張貼留言