सूचना जोड़ना मैं वापस show()
लाने के लिए UIAlertController
पर इस extension
लिखा था।
यह वर्तमान शीर्ष दृश्य नियंत्रक को खोजने के लिए प्रत्यावर्तन का उपयोग करता है: अब
extension UIAlertController {
func show() {
present(animated: true, completion: nil)
}
func present(#animated: Bool, completion: (() -> Void)?) {
if let rootVC = UIApplication.sharedApplication().keyWindow?.rootViewController {
presentFromController(rootVC, animated: animated, completion: completion)
}
}
private func presentFromController(controller: UIViewController, animated: Bool, completion: (() -> Void)?) {
if let navVC = controller as? UINavigationController,
let visibleVC = navVC.visibleViewController {
presentFromController(visibleVC, animated: animated, completion: completion)
} else
if let tabVC = controller as? UITabBarController,
let selectedVC = tabVC.selectedViewController {
presentFromController(selectedVC, animated: animated, completion: completion)
} else {
controller.presentViewController(self, animated: animated, completion: completion);
}
}
}
यह रूप में आसान है के रूप में:
var alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .Alert)
alertController.show()
संपादित करें:
Xcode 8.0 के लिए & स्विफ्ट 3:
extension UIAlertController {
func show() {
present(animated: true, completion: nil)
}
func present(animated: Bool, completion: (() -> Void)?) {
if let rootVC = UIApplication.shared.keyWindow?.rootViewController {
presentFromController(controller: rootVC, animated: animated, completion: completion)
}
}
private func presentFromController(controller: UIViewController, animated: Bool, completion: (() -> Void)?) {
if let navVC = controller as? UINavigationController,
let visibleVC = navVC.visibleViewController {
presentFromController(controller: visibleVC, animated: animated, completion: completion)
} else
if let tabVC = controller as? UITabBarController,
let selectedVC = tabVC.selectedViewController {
presentFromController(controller: selectedVC, animated: animated, completion: completion)
} else {
controller.present(self, animated: animated, completion: completion);
}
}
}
आप कक्षा हैं जो UIViewController नहीं है अब आंशिक रूप से अवांछित है। इस वर्ग का उपयोग कर रहे व्यू कंट्रोलर पर अलर्ट प्रदर्शित करने के लिए एक प्रतिनिधि या ब्लॉक आधारित कॉलबैक जोड़ने पर विचार करें। – 3lvis