2014-10-07 10 views
5

Nie mogę zrozumieć, jak uzyskać uruchamianie niestandardowego kontrolera widoku udziału. Rozumiem, że klasa SLComposeServiceViewController zapewnia programistom widok komponowania barebone, podobnie jak już świadczone typy serwisów Facebook i Twitter, a programista musi implementować swoje własne funkcje. Jeśli tak, to czy nie powinienem zainicjować SLComposeServiceViewController tak jak każdy inny VC i przedstawić go?Jak zainicjować i zaprezentować niestandardowy SLComposeServiceViewController?

+0

Czy zdarzyło Ci się kiedyś przedstawić ten widok, który wygląda tak, jak te dostarczane przez system? – bdmontz

Odpowiedz

3

Z mojego rozumienia wydaje się, że klasa ma być subklasyzowana pod względem funkcjonalności.

Można zrobić bardzo prosty podklasy, jeśli chcesz, aby to dynamiczny

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) 
    } 
} 

a następnie przedstawić go

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

Myślę też można kopać w SLComposeSheetConfigurationItem dla lepszej personalizacji ale mam nie zrobiłem tego sam.

+0

Fajnie! Spróbuję tego. Przyjmuję twoją odpowiedź, ponieważ wydaje mi się to całkiem uzasadnione. Dzięki. –

Powiązane problemy