gpt4 book ai didi

ios - 根据用户角色为 UIViewController 子类重用 Storyboard UI

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:56 26 4
gpt4 key购买 nike

假设我正在构建一个像 Twitter 这样的社交网络,并且正在尝试构建一个 ProfileViewController用于显示用户信息。首先,我将创建一个名为 ProfileViewController 的类, 并将其连接到 UITableViewController在 Storyboard 中。

现在,我想自定义 ProfileViewController基于哪个用户正在查看哪个配置文件。如果我正在查看我自己的个人资料,我可以有一个“编辑”按钮,而如果其他人正在查看我的个人资料,它会有一个“关注”按钮。但是基本模板是一样的,它仍然需要显示常见的东西,比如最新的帖子。

我可以这样做的一些方法:

  1. 使用相同的 ProfileViewController类(class)。例如,我可以有多个 ProfileViewControllers 实例在 Storyboard 上并使用他们的每一个 restorationId区分用户点击“个人资料”时调用的 ProfileViewController 与 ProfileViewController当用户访问其他人的个人资料时被调用。

  2. 创建不同版本的 ProfileViewController为每个目的。我可以创建一个类 MyProfileViewController专门用于处理我自己的配置文件,并创建一个类 UserProfileViewController用于处理其他用户的个人资料。

我不确定最佳做法是什么。谁能帮忙?

最佳答案

虽然您具体询问的是 Storyboard 场景和 ViewController,但问题更笼统地表述为:

“我应该有一个类,它有逻辑以两种不同的方式行动,给定一些状态决定变量,还是两个不同的类?”

拥有一个类的动机是因为大部分逻辑是共享的,而且您不想重复代码(和错误)。这是一个很好的动机。

拥有两个类的理由是您摆脱了 if/else 代码,这可以通过降低复杂性并使类更准确地定义它们的确切目的来减少错误。这也是一个很好的动力。

幸运的是,您可以两全其美。上三个类(class)。

  • 第一个类 A 将实现两种情况下共有的所有逻辑。在您的情况下,这将具有除“我的个人资料” View 的“编辑”按钮之外的所有逻辑,并且可能类似于“其他个人资料” View 的“添加 friend ”按钮。

  • 第二个类 B 和第三个类 C 将分别实现“编辑按钮”和“添加好友按钮”的逻辑,并且还利用第一个类实现通用逻辑。您可以使与第一个类的关系是从 A 类继承,或者委托(delegate)给 A 类的一个实例。在这种情况下使用派生通常是最好的,在这种情况下您可以确保所有基类功能与两个子类同等相关,并且您不介意在公共(public)界面中公开派生。

关于ios - 根据用户角色为 UIViewController 子类重用 Storyboard UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378971/

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