1
私はこのシンプルなクラスと 'ShowAlert'という仮想プロトコルを持っています。これはデフォルトの実装とデフォルトのViewControllerとそのShowAlertプロトコル実装を拡張したものです。拡張の動作を維持するSwiftオーバーライドプロトコル拡張
protocol ShowAlert {
var titleForAlert: String! { get }
func messageForAlert() -> String!
func show()
}
extension ShowAlert where Self: UIViewController {
func show(){
let alert = UIAlertController(title: self.titleForAlert, message: self.messageForAlert(), preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Ok", style: .Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func showItNow(sender: AnyObject) {
self.show()
}
}
extension ViewController: ShowAlert {
var titleForAlert: String! {
get{
return "Foo"
}
}
func messageForAlert() -> String! {
return "Bar"
}
func show() {
// here I want to call the default implementation of the protocol to show the alert, then do something else
print("Good day sir!")
}
}
それは私が「)super.show(」呼び出してから、私はそれの後にやりたいものは何でも実装し続けることができたサブクラスでのようなものです。
これを行う方法はありますか?あるいは、私の論理は、どんなプロトコルが設計されているのかと違って起こります。
いいアイデアだが、私はSwiftが新しい機能を追加することなく、このような状況に対処する何かを持っていると考えていた。とにかくありがとう。 – RodolfoAntonici