在ios 6之後提供了一個分享清單視圖,它通過uiactivityviewcontroller管理。蘋果設計它主要的目的是替換分享動作選單(actionsheet),分享動作選單是出于分享目的的動作選單。

通過動作選單上的選擇按鈕,可以把圖檔分享給别人。但是随着ios功能的不斷增加,需要分享的内容越來越多,它會以模态視圖方式呈現。ipad裝置的分享清單,它會以popover視圖方式呈現。
從圖中可以看出分享清單中可以有很多頁,每頁有9個應用,可以左右滑動翻頁,這樣就可以共享更多的内容了。
内置活動清單項
分享清單使用uiactivityviewcontroller來控制它的呈現和關閉,凡是繼承uiactivity抽象類的子類對象都可以放在清單中呈現出來。
下面我們通過一個執行個體介紹一下使用uiactivityviewcontroller管理内置活動清單項,這個執行個體點選左畫面工具欄中的action按鈕,會彈出分享清單模态視圖(中圖所示),如果我們選擇了微網誌,會彈出微網誌撰寫對話框(右圖所示),可以在這裡撰寫微網誌,完成之後可以點選“發送”按鈕發送微網誌,如果沒有在系統設定中沒有設定微網誌賬戶資訊,則會有提示對話框。
我們下面介紹一下代碼實作部分,代碼參考viewcontroller.m的shareaction:方法:
後面選擇微網誌,以及發送微網誌這些全部是uiactivityviewcontroller給我們封裝好的,我們不需要編寫一行代碼
自定義活動清單項
有的時候根據我們共享内容不同,需要自動定義活動清單項。例如:你的應用是一個觀看視訊的應用,那麼你可能需要共享視訊到“優酷”視訊網站。下面這一節我們介紹自定義活動清單項。
凡是繼承uiactivity抽象類的子類對象都可以放在清單中呈現出來。這包括了ios系統通過内置的9個活動清單,也可以是我們自定義的清單項。
下面我們通過一個執行個體介紹一下使用uiactivityviewcontroller管理自定義活動清單項,點選左畫面工具欄中的action按鈕,會彈出分享清單模态視圖,其中清單中“打開book”是我們自定義清單項,點選“打開book”清單項執行一些操作,這裡的操作是打開book網站。
shareaction:方法與上一節内置活動清單項類似,在本例中我們隻需要一個資料項(即提供url),第①行代碼就是提供了url。第②行代碼執行個體化活動清單項bookactivity,然後需要把它放到一個nsarray集合中。第③行代碼執行個體化uiactivityviewcontroller對象,構造方法中applicationactivities部分參數在内置活動清單項為nil,在自定義活動清單項中是指定自定義活動清單項對象集合,就是nsarray集合。
自定義活動清單項代碼實作bookactivity.h的代碼如下:
自定義活動清單項必須繼承uiactivity,屬性url提供清單項服務的資料項。bookactivity.m的代碼如下: