私はUIViewController
にUIButton
を持っています。私はカスタムデリゲートを使用してテキストを印刷しています。さて、問題はviewDidAppear(animated)
理想的に実行されない方法を委任している(すなわち、UITableViewDataSource
など)UITableViewDataSourceのようなカスタムデリゲートメソッドを迅速に実行するには?
プロトコル:
protocol FruitDelegate{
func fruit(_ name:String,taste:String)->Bool
}
フルーツクラス
class Fruit{
var delegate:FruitDelegate?
var name:String!
var taste:String!
init(name:String,taste:String){
self.name = name
self.taste = taste
}
func isTrue(){
if self.delegate?.fruit(name, taste: taste) == true{
print("Answer Correct")
}else{
print("Answer Wrong")
}
}
}
ビューコントローラ:
class ViewController: UIViewController,FruitDelegate {
@IBOutlet var textLabel: UILabel!
let fruit = Fruit(name: "mango", taste: "sweet")
override func viewDidLoad() {
super.viewDidLoad()
self.fruit.delegate = self
}
func fruit(_ name: String, taste: String) -> Bool {
if name == "mango" && taste == "sweet"{
return true
}else{
return false
}
}
@IBAction func actionRefreshButton(_ sender: UIButton) {
self.fruit.isTrue()
}
}
私は私の問題のための正確な解決策を与えるコードを知っています。
override func viewDidLoad() {
super.viewDidLoad()
self.fruit.delegate = self
self.fruit.isTrue()
}
しかし、それはviewController
方法にself.fruit.isTrue()
を呼び出すために必要ですか? (viewDidAppear
まで)。 UITableView
では、ビューが表示されるときにはreloadData()
に電話する必要はありません。同じように、私はFruitDelegate
メソッドを実行する必要があります。私はどうやって?
使用didSetに
isTrue
メソッドを呼び出す必要がありますか? – koropok@koropok、ありがとう。私はそれを試してみよう。 –
@koropok、あなたは正しい。どうもありがとう。 –