Итак, я создал свое приложение для просмотра в быстрых и Xcode. Весь мой код находится в одном файле, основной ViewController.swift
, чтобы сделать вещи проще по мере увеличения кодов. Я начал перемещать методы в отдельный быстрый файл, чтобы все было организовано - ClipManager.swift
.UIAlertController не отображается при перемещении в другой быстрый файл
У меня есть 3 метода, которые используют метод notifyUser
, который вызывает UIAlertController
.
Поэтому я переместил этот метод в тот же файл, ClipManager.swift
, но теперь мои предупреждения не отображаются, когда эти методы вызывают в текущем ViewController - ViewController.swift
, поскольку методы находятся в отдельном файле.
Во-первых, мой метод, который использует UIAlert
////Located in ClipManager.swift
class ClipManager: UIViewController {
func notifyUser(title: String, message: String) -> Void
{
let alert = UIAlertController(title: title,
message: message,
preferredStyle: UIAlertControllerStyle.Alert)
let cancelAction = UIAlertAction(title: "OK",
style: .Cancel, handler: nil)
alert.addAction(cancelAction)
self.presentViewController(alert, animated: true,
completion: nil)
}}
Вызов моего метода от ViewController.swift
class ViewController: UIViewController {
///// In ViewController.swift (where I want the Alert to show)
let SavedRecord = MyClipManager.SaveMethod(publicDatabase!, myRecord: record)
}
Код для SaveMethod
расположенный в ClipManager.swift
func SaveMethod(publicDatabase: CKDatabase, myRecord:CKRecord) -> CKRecord {
publicDatabase.saveRecord(myRecord, completionHandler:
({returnRecord, error in
if let err = error {
//// **** Notify called here *****
self.notifyUser("Save Error", message:
err.localizedDescription)
} else {
dispatch_async(dispatch_get_main_queue()) {
self.notifyUser("Success",
message: "Record saved successfully")
}
}
}))
return myRecord
}
Я предполагаю, что мои оповещения не отображаются, потому что они фактически запускаются на ClipManager.swift
, который не отображается.
Каковы мои варианты здесь, Переместите NotifyUser
обратно в ViewController.swift
и создайте и обведите его в ClipManager.swift
, чтобы позвонить ему в моих методах, расположенных там?
Или есть способ передать эти предупреждения указанному виду?
Большое вам спасибо! это отлично сработало ... Не могли бы вы объяснить мне, как это изменилось, я понимаю, что rootviewcontroller выбирает первый контроллер представления? Почему это изменено на NSObject? – Malorrr
для NSObject это просто сказать вам, что вы можете использовать простой класс быстрого управления уведомлением. Корневой контроллер - это корневой вид. Содержит ваше содержимое. –
Часть 'NSObject' не имеет отношения к решению, все в Swift наследует от' NSObject', и нет никакой разницы между явным наследованием его здесь в вашем файле класса и не включая его. – pbush25