Возвращает значение Bool из Function после показа 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)
}
2 ответа
Вы не возвращаете bool из вида предупреждений. Ваш "хорошо" обработчик UIAlertAction - это место, где вы должны предпринять соответствующие действия. Проверьте там, должен ли документ быть напечатан, а затем распечатайте его. Или вызовите метод, который сделает это. Но сделайте это из обработчика. Обработчик - это блок кода, в котором у вас есть комментарий "// Выполнить некоторые основные операции с данными..."
Попробуй это:
var isprint:BOOL = false
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 })
isprint = 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
isprint = true// This is where the issue comes in
})
alertController.addAction(ok)
self.presentViewController(alertController, animated: true, completion: nil)
}