2014-10-07 26 views
5

我似乎無法理解如何獲得自定義共享視圖控制器。我的理解是,SLComposeServiceViewController類爲開發人員提供了一個準系統組合視圖,就像已經提供的服務類型Facebook和Twitter一樣,開發人員必須實現他或她自己的功能。如果是這樣的話,我不應該像其他VC一樣初始化SLComposeServiceViewController並呈現它嗎?如何初始化並顯示自定義SLComposeServiceViewController?

+0

你有沒有真的得到這個呈現一個看起來像系統提供的視圖? – bdmontz 2015-02-09 15:24:41

回答

3

從我的理解來看,這個類似乎是爲了功能而被分類的。

如果你想你可以做一個非常簡單的子類,它的動態

enum ComposeServiceResult { 
    case Cancel 
    case Post 
} 
class ComposeServiceViewController: SLComposeServiceViewController { 
    var completionHandler : ((result:ComposeServiceResult, text:String) -> Void)! 

    override func didSelectCancel() { 
     completionHandler(result: .Cancel, text: self.contentText) 
     self.navigationController?.dismissViewControllerAnimated(true, completion: nil) 
    } 

    override func didSelectPost() { 
     completionHandler(result: .Post, text: "") 
     self.navigationController?.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

,然後呈現它

var composeVC = ComposeServiceViewController() 
composeVC.title = "Facebook" 
composeVC.placeholder = "Add a caption!" 
composeVC.completionHandler = completionHandler 
composeVC.modalPresentationStyle = .OverCurrentContext; 
presentViewController(composeVC, animated: true, completion: nil) 

我也認爲你能挖掘到SLComposeSheetConfigurationItem更好的自定義,但我有我自己沒有這樣做。

+0

酷!我會嘗試。我會接受你的答案,因爲它對我來說似乎很合理。謝謝。 – 2014-12-02 08:58:05