如何在Swift / Xcode中使用“条件渲染”?

时间:2018-11-27 18:48:10

标签: swift xcode uikit

在React和其他Web前端框架中,存在“条件渲染”的概念。您可以根据某些条件是否正确将UI的某些元素呈现给DOM。

条件渲染的概念在Xcode / Swift中如何工作?由于您显然是在情节提要上构建UI的,所以我不知道如何有条件地渲染元素。

一个特定的示例:假设我有一个数组数组,并且要为该数组中的每个数组呈现一个tableview。我将如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

简短的回答:“没有。”这不是iOS的工作方式。

答案 1 :(得分:-1)

  

比方说,我有一个数组数组,并且要为该数组中的每个数组呈现一个tableview。我将如何解决这个问题?

您可能会显示所有数组的列表(或每个数组对应的内容)和一个表。当用户选择列表中的其中一项时,您可以将表视图的数据源设置为使用相应的数组。

当然,这不是唯一的方法。如果您确实想为列表中的每个数组绘制不同的表,则可以执行此操作-您将负责代码。但是为什么要使事情变得更复杂呢?

  

由于您显然是在情节提要上构建了UI,所以我不知道如何有条件地渲染元素。

故事板不是构建UI的唯一方法,而且比静态元素集合还灵活得多。情节提要本质上是连接的场景的集合,其中每个场景都是一屏内容的模板。但是您的代码可以调整场景中的对象,包括隐藏或显示它们,更改它们的位置以及添加矿石以删除视图。因此,如果您想要一个场景,可以为列表中的每个项目使用不同的表,然后只需根据所选内容调整各个表的可见性即可。或者,您可能根本没有表,您的代码可以动态创建一个表并将其插入视图中。

简而言之:您对情节提要板的工作方式承担了太多的假设。开始阅读有关how view controllers work的内容,您很快就会对UI的控制方式有了更好的了解。

答案 2 :(得分:-1)

  

比方说,我有一个数组数组,并且要为该数组中的每个数组呈现一个tableview。我将如何解决这个问题?

由于使用了标签,因此您将编写代码-大概是Swift代码。

让我们变得更加具体。您有一个void Map::setPlayers(int x, int y, int player, int n) { position[n][0] = player; position[n][1] = x; position[n][2] = y; cout << width << endl; cout << length; } 对象,该对象的数组为Bookcase,每个Shelf的数组为Shelf

如果您使用的是情节提要,则可以在情节提要中创建一个Book场景,并具有单个表格视图,以将ShelfController放在一个Book中。您也可以使用Shelf场景(例如,堆栈视图)。堆栈视图没有子视图,因为在设计情节提要时,您不知道需要显示多少个架子。

然后,在Swift代码中,为BookcaseController提供其BookcaseController模型对象时,Bookcase实例化BookcaseController场景中的每个ShelfController一次。 Shelf。它将每个Bookcase添加为一个子视图控制器,并将每个ShelfController的视图(一个表视图)添加为其(ShelfController的)堆栈视图的一个安排好的子视图。 / p>