Sztuką jest zapisanie pliku lokalnie jako pliku .txt, a następnie otwarcie go przy użyciu UIDocumentInteractionController
. Oto pełna przykładowy kod:
import UIKit
class ViewController: UIViewController, UIDocumentInteractionControllerDelegate {
var interactionController: UIDocumentInteractionController?
func openInPages(body: String, title: String) throws {
// create a file path in a temporary directory
let fileName = "\(title).txt"
let filePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent(fileName)
// save the body to the file
try body.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding)
// for iPad to work the sheet must be presented from a bar item, retrieve it here as below or create an outlet of the Export bar button item.
let barButtonItem = navigationItem.leftBarButtonItem!
// present Open In menu
interactionController = UIDocumentInteractionController(URL: NSURL(fileURLWithPath: filePath))
interactionController?.presentOptionsMenuFromBarButtonItem(barButtonItem, animated: true)
}
}
połączeń openInPages
z dowolnego miejsca w kodzie (jak wtedy, gdy użytkownik naciśnie się Export
bar przedmiot przycisk):
openInPages("This will be the body of the new document", title: "SomeTitle")
Dziękuję bardzo; Próbowałem twojej metody (użyłem dokładnie twojego kodu, z wyjątkiem tego, że musiałem nazwać 'openInPages' tak:' do { spróbuj openInPages (flowNote.text, title: "Wyeksportowany z NoteFlow, 1 sierpnia") } złapać _ { print ("nie można otworzyć w Pages.") } } i nic się nie stało podczas wywoływania funkcji (uruchomiłem to na moim fizycznym powietrzu iPada oraz w symulatorze iPhone'a 6.) W konsoli pojawiło się wiele błędów niekrytycznych, wygląda na to, XCode musiał złamać wiązkę ograniczeń w menu Airdrop. (?) Więc potrzebuję pomocy tutaj! – owlswipe
prawdopodobnie próbujesz wywołać tę metodę zbyt wcześnie w cyklu życia aplikacji, patrz zaktualizowany kod – Casey
Nie sądzę, że to jest Wywołanie go z viewdidload, podobnie jak w nowym kodzie, powoduje, że nie jest drukowany żaden błąd, ale również nie powoduje wyświetlenia okna dialogowego udostępniania w ogóle. (Uwaga: komunikaty o błędach z uszkodzonymi ograniczeniami nadal pojawiają się w konsoli, gdy wywoływane są dokładnie tak, jak robisz to z viewdidload.) – owlswipe