2014-10-07 9 views
5

Non riesco a capire come ottenere un controller di visualizzazione share personalizzato attivato. La mia comprensione è che la classe SLComposeServiceViewController fornisce allo sviluppatore una vista di composizione barebone, molto simile ai tipi di servizi già forniti Facebook e Twitter, e lo sviluppatore deve implementare le proprie funzionalità. In questo caso, non dovrei semplicemente avviare SLComposeServiceViewController come qualsiasi altro VC e presentarlo?Come si inizializza e si presenta un SLComposeServiceViewController personalizzato?

+0

Hai mai avuto questo per presentare una vista simile a quella fornita dal sistema? – bdmontz

risposta

3

Dalla mia comprensione, sembra che la classe sia destinata alla sottoclasse per la funzionalità.

Si potrebbe fare un semplice sottoclasse se si vuole renderlo dinamico

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

e poi presentarlo

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

penso anche che si può scavare in SLComposeSheetConfigurationItem per la personalizzazione meglio, ma non ho non fatto da me stesso

+0

Fantastico! Ci proverò. Accetterò la tua risposta in quanto mi sembra abbastanza legittima. Grazie. –

Problemi correlati