我目前正在努力学习并提升我作为Swift开发人员的技能,这可能是一个愚蠢的问题,但我很好奇。
问题
在我的代码中,我不断重复UIAlertController创建和演示代码,以至于看起来很草率。同时将它调度到主线程,它最多需要5行,并且我在多个视图控制器上多次在我的项目中重复此代码。所以我创建了一个“Utilities”类,在该类中我有一个显示UIAlertController的函数。
问题
我想知道的是,这是一种糟糕的编码习惯吗?从另一个类不断调用这个函数是不是很草率,不断创建一个新的UIAlertController?这会减慢我的申请吗?或者这完全没问题?
代码意义重大:
class Utils {
func displayError(viewController: UIViewController, title: String, message: String, action: UIAlertAction?) {
let ac = UIAlertController(title: title,
message: message,
preferredStyle: .alert)
if action == nil {
ac.addAction(UIAlertAction(title: "Ok", style: .cancel))
} else {
ac.addAction(action!)
}
DispatchQueue.main.async {
viewController.present(ac, animated: true)
}
}
}
先谢谢你。
答案 0 :(得分:1)
我希望将消息保存在单独的类function render_product_description($item_id, $item, $order){
$_product = $order->get_product_from_item( $item );
echo "<br>" . $_product->post->post_content;
echo "<br>";
echo '<p><strong>Time:</strong><br />';
echo get_post_meta($_product->id, 'time', true) .'</p>';
echo '<p><strong>Category:</strong><br />';
echo wp_get_post_terms($_product->id, 'product_cat', true) .'</p>';
echo '<p><strong>Date:</strong><br />';
echo get_post_meta($_product->id, 'date', true) .'</p>';
}
add_action('woocommerce_order_item_meta_end', 'render_product_description',10,3);
中,并从各种VC进行调用。
根据Youssef和How to resolve: 'keyWindow' was deprecated in iOS 13.0
class GlobMessage: UIAlertController {
答案 1 :(得分:0)
您可以使用窗口的rootviewcontroller属性来显示警报,而不是将视图控制器作为参数传递。这是一个例子:
class Utils {
static func displayAlert(title: String, message: String) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "Default", style: .default, handler: nil)
alertController.addAction(defaultAction)
guard let viewController = UIApplication.shared.keyWindow?.rootViewController else {
fatalError("keyWindow has no rootViewController")
return
}
viewController.present(alertController, animated: true, completion: nil)
}
}
不要忘记将您的函数定义为静态,以便能够以这种方式调用它:
Utils.displayAlert(title: "Hello", message: "This is an alert")