多年来,我已经为iPhone应用程序编写了自己的视图代码,但现在我又重新看了看故事板。
在我的代码中,一个常见的模式是在两个地方使用相同的视图控制器,但是UI稍有变化。例如,在浏览品牌列表(BrandListController)时,我希望显示系统中所有品牌的表视图;点击一个品牌会显示其产品。但是,当按品牌过滤项目时,我想显示一个品牌的表视图(内容和单元格外观相同),但我想点击一行将您带回过滤器屏幕,而不是显示该品牌的项目。我还想在右上角的“搜索”栏按钮项目。
在代码中很容易实现这些事情,只需添加一个布尔成员变量,这样控制器就可以在出现之前进行配置。
但是我怎么用故事板来做这个呢?对于同一个BrandListController实例,我可以有多个控制器,但同样,我希望控制器具有不同的行为,并根据其使用方式包括/排除UI元素。在故事板中创建两个单独的BrandListController实例似乎是个坏主意,因为这样我就必须复制所有的出口连接,并且必须保持更改的同步。但我的其他选择是什么?
发布于 2014-09-30 13:58:39
需要意识到的是,故事板并不一定只需要使用单一的故事板。
你可以使用多个故事板或使用它们与尼克斯等.
但是,在这种情况下,仍然可以在控制器上使用布尔属性。
然后,在其他控制器的prepareForSegue方法中,可以设置此布尔属性以更改行为。您甚至可能有几个nib,它根据属性将UI的一小部分定义到视图中。
我也做过这样的事情,把积木传给观景器。
例如..。
我有一个“用户搜索”控制器,它的默认行为是,如果您点击一个用户,它将推送到该用户的配置文件页面。
但是我可以传入一个代码块,例如,该代码块将取消搜索控制器,并使用选定的用户为他们创建一个新消息(或其他什么)。或者完全取决于我传入的代码块。
编辑
哈哈,再读一遍你的问题。我用积木做的事也会对你有用的。我创建了一个名为userTappedBlock之类的块属性。如果存在这种情况,那么当单元格被点击时,我运行它。如果没有,我会做默认的行为。
https://stackoverflow.com/questions/26122639
复制相似问题