了解回调
这些是什么?
它们如何运作?
它们是用来干什么的?
整篇文章将使您对 iOS开发中最常见的编程模式之一有深入的了解 。
在此项目中,回调用于在ChoosePokemonTableViewController和PokemonDisplayViewController之间发送和接收信息。
要设置项目,请在此处下载文件。
首先,让我们打开ChoosePokemontTableViewController.swift文件。 在文件中,您将看到/// TODO:像这样的评论⬇️
我们将逐步完成在ViewController和TableViewContoller文件之间创建成功的回调的步骤。
类型别名
类型别名允许您将现有时间重命名为您选择的时间。 目的是使我们的代码更具可读性和易于理解。
查找// TODO:1.在您的ChoosePokemonTableViewController.swift文件中,然后键入⬇️
typealias PokemonCallback =(口袋妖怪)->虚空
您的文件应该看起来像这样⬇️
大! 我们刚刚将Type Pokemon重命名为PokemonCallback。 使用Struct在Pokemon.swift文件中创建了Pokemon类型。
接下来,我们将创建一个名为pokemonCallback的变量并将其设置为Type PokemonCallback? <-箭头表示它是可选的。 *更多关于可选内容的信息。
var pokemonCallback:PokemonCallback?
这是重要的部分,因为我们现在将调用Callback方法并传递selectedPokemon 。 这将充当将ChoosePokemonTableViewController连接到PokemonDisplayViewController的桥梁。
在tableView函数中使用参数中的didSelectRowAt键入以下代码。 当我们点击口袋妖怪的列表时, didSelectRowAt tableView将运行。
pokemonCallback?(selectedPokemon)
当选择表格中的一个单元格时,让我们切换到PokemonDisplayViewController来接收消息!
我们将在下面的代码中输入⬇️
selectPokemonController.pokemonCallback = self.checkGuessedPokemonAndShowPokemon
这将调用我们从choicePokemonController创建的pokemonCallback ,并将其设置为此文件中的功能checkGuessedPokemonAndShowPokemon 。
恭喜! 现在,每次您从ChoosePokemonTableViewController中选择一个单元格时,回调就会启动,步骤4中的最后一行代码将开始检查猜想的Pokemon名称是否正确,然后显示Pokemon是否被正确猜中。
很容易吧? 实质上,这就是回调的工作方式。 4个简单步骤! 想象一下从一个ViewController到另一个ViewController建一个金州大桥。