У меня есть возможность распечатать документ в основном в моем приложении. Теперь несколько документов не могут быть напечатаны (если не указан критерий). Поэтому я использую делегатов.Возвратите значение Bool из функции после отображения AlertView
Обратите внимание, что я использую смесь как Objective C
, так и Swift
.
В основном мой код печати выглядит следующим образом:
if ([self.delegate respondsToSelector:@selector(shouldPrintDocument)]) {
BOOL shouldPrint = [self.delegate shouldPrintDocument];
NSLog(@"Should Print %d", shouldPrint);
if (shouldPrint){
//We will print here
}
}
Теперь на Swift
стороне вещей, что я в основном нужно сделать, это подтвердить с пользователем, если они хотят, чтобы начать печать документа. Итак, я использую UIAlertController
.
Вопрос в том, как вернуть значение bool из этого окна предупреждения.
func shouldPrintDocument() -> Bool {
let alertController = UIAlertController(title:"Confirm Print",
message: message,
preferredStyle: UIAlertControllerStyle.Alert)
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: {(action: UIAlertAction) -> Void in
alertController.dismissViewControllerAnimated(true, completion: { _ in })
return false
})
alertController.addAction(cancelAction)
let ok: UIAlertAction = UIAlertAction(title: "Confirm", style: .Default, handler: {(action: UIAlertAction) -> Void in
alertController.dismissViewControllerAnimated(true, completion: { _ in })
//Perform some core data work here, i.e., save a few things and return
return true // This is where the issue comes in
})
alertController.addAction(ok)
self.presentViewController(alertController, animated: true, completion: nil)
}
Вы почти наверняка сделать это в затворе. Ваша функция не будет ждать возвращения другого закрытия без блокировки. Он должен вернуться как можно скорее и передать его в завершение. – Dare
@Dare Привет, да, но я не уверен, как это сделать? Не могли бы вы указать мне в правильном направлении? –
Вы можете использовать функцию делегирования таблицы действий, откуда вы можете получить возвращаемые значения –