Время Kludge - см. Генерировать результат System.Xml.XmlDocument.OuterXml (), который действителен в HTML
В основном после того, как XML-документ был создан, пройдите через каждый узел, добавив пустой текстовый узел, если нет детей
// Call with
addSpaceToEmptyNodes(xmlDoc.FirstChild);
private void addSpaceToEmptyNodes(XmlNode node)
{
if (node.HasChildNodes)
{
foreach (XmlNode child in node.ChildNodes)
addSpaceToEmptyNodes(child);
}
else
node.AppendChild(node.OwnerDocument.CreateTextNode(""))
}
(Да, я знаю, что вам не нужно это делать, но если вы отправляете XML в какую-либо другую систему, которую вы не можете легко исправить, должны быть прагматичными в отношении вещей)
Ответ прост: это унаследовано от UIViewController. Если вы просто добавляете представление viewController к вашему представлению, методы делегата не вызываются. ViewController имеет свой жизненный цикл. Пожалуйста, прочитайте здесь: s> https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller s>
Итак, извинения за то, что некоторые как-то не так. Конечно, вы можете добавить sub-viewController, показывающий только его вид. Но: я думаю, что это не должно быть вариантом использования. Это полноэкранный ViewController, соответствующий руководствам по дизайну от самого Apple. При этом вы должны представить его следующим образом:
func addPicker() {
var documentPickerController: UIDocumentPickerViewController!
documentPickerController = UIDocumentPickerViewController(documentTypes: [String(kUTTypePDF)], in: .import)
documentPickerController.delegate = self
documentPickerController.allowsMultipleSelection = false
present(documentPickerController, animated: true, completion: nil)
}
Имеются некоторые ошибки, из-за которых разработчик обнаружил, что представление отклоняется до вызова делегата. Насколько я видел, это поведение было введено с ios11 и произошло также, когда был представлен viewController. Я не могу сказать, исправлено ли это или нет, и связано ли это поведение с тем, чтобы показать его как подпредставление. (Я думаю, что это как-то исправлено, так как оно работает с представленным viewController)
В любом случае, вы должны просто представить его, как написано выше, и вы готовы к работе.