私はこれにしばらくお待ちしており、何を見てもこのことを理解できないようです。キーボード上にツールバーを追加するためにUIViewを拡張しているとします。そのUIViewを使用しているクラスからアクセスする必要があるパラメータを渡す方法が完全にはわかりません。そのため、拡張。私は、プロトコルを使用しようとしました、私は拡張プロパティを格納していないことを知っているクラスからその変数が使用しているオブジェクトの拡張機能に変数を渡すにはどうすればよいですか?
extension UITextView {
func addToolBar(){
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.backgroundColor = UIColor.white
toolBar.tintColor = UIColor.gray
let doneButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.plain, target: self, action: #selector(donePressed))
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(cancelPressed))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
toolBar.sizeToFit()
self.inputAccessoryView = toolBar
}
func donePressed(){
self.resignFirstResponder()
}
func cancelPressed(){
self.resignFirstResponder()
//how to access parameters in MyClass to do stuff here?
}
}
:ここ
class MyClass : UIViewController {
var paramToAcess : String! //param to access in extension
override func viewDidLoad() {
super.viewDidLoad()
let textView = UITextView()
textView.addToolBar() //using the extension to add toolbar
self.view.addSubview(textView)
}
//////// other methods ///////
}
と拡張したものです:
は、私はクラスでUITextViewを実施していると言います正しく実装することはできません。助けをお待ちしています。
できません。あのようでなく。 MVCモデルを破壊して、その2つの関数からクラスにアクセスしようとします。クラスに固有のことが本当に必要な場合は、クラス内のツールバーを作成することができます。このツールバーを何度も使用している場合は、拡張機能が必要です。 –
私は同意すると、サブクラス化は良い選択と思われる。しかし、他の方法があると好奇心が強いのであれば、それらは何か..コメントありがとう – TheeBen