アラートコントローラを表示するためのカスタムクラスを作成し、クリック時に実行する必要がある定義済みアクションを作成しました。私が他のクラスからその関数を呼び出すと、警告が表示されますが、[OK]ボタンをクリックすると、実行セレクタは呼び出されません。以下は両方の機能です。セレクタを実行してSwiftを呼び出さない
VFSCCocoaUtils.sharedInstance.createCommonAlert(mainTitle: kNoSimCardTitle, mainMessage: kNoSimCardMessage, subTitle: kOkButtonTitle, callBackName: #selector(self.getName), completionHandler: {(alertView) in
self.present(alertView, animated: true, completion: nil)
})
func createCommonAlert(mainTitle : String , mainMessage : String , subTitle : String, callBackName : Selector , completionHandler: @escaping (UIAlertController) ->()) {
let selector: Selector = callBackName
let alertView = UIAlertController(title:mainTitle, message:mainMessage, preferredStyle: .alert)
alertView.addAction(UIAlertAction.init(title: subTitle, style: .default, handler: { (alertView) in
DispatchQueue.main.async {
self.perform(selector)
}
}))
DispatchQueue.main.async {
completionHandler(alertView)
}
}
は#selector(ClassName.getName)と#selector(self.getName)を交換してください。セレクタを作成するときには、selfの代わりにクラスの名前を記述する必要があります。 – ZeMoon
私は#selector(VFSCSettingsViewController.getName)に言及しましたが、動作しませんでした。 – Kashif
クロージャを渡す代わりにセレクタアプローチを使用したのはなぜですか? – ZeMoon