因此,我已经在swift和Xcode中构建了我的单一视图应用程序。我所有的代码都在一个文件中,主代码为ViewController.swift
,使代码变得更容易。我已经开始将这些方法移动到一个单独的swift文件中,以便保持组织结构 - ClipManager.swift
。UIAlertController未显示何时移动到另一个swift文件
我有3种方法都使用notifyUser
方法,它调用UIAlertController
。
所以我提出这个方法为同一个文件,ClipManager.swift
但现在我的警报没有显示时,这些方法称为当前视图控制器 - 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)
}
对位于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它只是告诉你,你可以使用一个简单的Swift类的通知管理。 rootView控制器是根视图包含你的内容 –
'NSObject'部分与解决方案无关,Swift中的所有东西都从'NSObject'继承,在你的类文件中显式继承它并且不包含它。 – pbush25