gpt4 book ai didi

ios - Storyboard : How do I use the same view controller in several places?

转载 作者:行者123 更新时间:2023-11-28 19:56:40 24 4
gpt4 key购买 nike

多年以来,我一直为 iPhone 应用程序手工编写 View 代码,但现在我要让 Storyboard焕然一新。

我的代码中的一个常见模式是在两个地方使用相同的 View Controller ,但 UI 略有不同。例如,当浏览品牌列表(BrandListController)时,我想显示系统中所有品牌的表格 View ;点击一个品牌会向您展示其产品。但是当按品牌过滤项目时,我想显示品牌的表格 View (具有相同的内容和相同的单元格外观),但我想点击一行将您带回过滤屏幕而不是向您展示品牌的元素。我还想要右上角的“搜索”栏按钮项。

在代码中很容易实现这些事情,只需添加一个 bool 成员变量,这样就可以在 Controller 出现之前对其进行配置。

但是我该如何使用 Storyboard 来做到这一点呢?我可以让多个 Controller 连接到 BrandListController 的同一个实例,但同样,我希望 Controller 具有不同的行为并根据其使用方式包含/排除 UI 元素。在 Storyboard 中创建两个单独的 BrandListController 实例似乎是个坏主意,因为这样我就必须复制所有 socket 连接,并且必须保持更改同步。但是我的其他选择是什么?

最佳答案

使用 Storyboard 需要注意的是,您不必只使用一个 Storyboard。

您可以使用多个 Storyboard或将它们与 Nib 等结合使用...

但是,在这种情况下,您仍然可以在 Controller 上使用 bool 属性。

然后在其他 Controller 的 prepareForSegue 方法中,您可以设置此 bool 属性以更改行为。您甚至可能有几个定义 UI 的一小部分的 nib,以根据属性放置到 View 中。

我也做过类似的事情来将 block 传递到 View Controller 。

例如……

我有一个“用户搜索” Controller ,它有一个默认行为,如果您点击一个用户,它将推送到该用户的个人资料页面。

但我可以传入一个代码块,例如,关闭搜索 Controller ,然后我使用选定的用户为他们(或其他)创建一条新消息。或者其他完全取决于我传入的代码块。

编辑

大声笑,重新阅读你的问题。我对积木所做的也对你有用。我创建了一个名为 userTappedBlock 之类的 block 属性。如果存在,那么我会在点击单元格时运行它。如果不是,我会执行默认行为。

关于ios - Storyboard : How do I use the same view controller in several places?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com