了解回调

这些是什么?

它们如何运作?

它们是用来干什么的?

整篇文章将使您 iOS开发中最常见的编程模式之一有深入的了解

在此项目中,回调用于在ChoosePokemonTableViewControllerPokemonDisplayViewController之间发送和接收信息。

要设置项目,请在此处下载文件

首先,让我们打开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建一个金州大桥。