菜鸟教程小白 发表于 2022-12-12 09:36:04

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


                                            <p><p>假设我正在构建一个类似 Twitter 的社交网络,并尝试构建一个 <code>ProfileViewController</code> 来显示用户信息。首先,我将创建一个名为 <code>ProfileViewController</code> 的类,并将其连接到 Storyboard 中的 <code>UITableViewController</code>。</p>

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

<p>我可以这样做的一些方法:</p>

<ol>
<li><p>使用相同的 <code>ProfileViewController</code> 类。例如,我可以在 Storyboard 上有多个 <code>ProfileViewControllers</code> 实例,并使用它们的每个 <code>restorationId</code> 来区分用户点击“配置文件”时调用的 ProfileViewController 与 <code>ProfileViewController</code> 在用户访问其他人的个人资料时被调用。</p></li>
<li><p>为每个目的创建不同版本的 <code>ProfileViewController</code>。我可以创建一个类 <code>MyProfileViewController</code> 专门用于处理我自己的配置文件,并创建一个类 <code>UserProfileViewController</code> 来处理其他用户的配置文件。</p></li>
</ol>

<p>我不确定最佳做法是什么。有人可以帮忙吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>虽然您具体询问的是 Storyboard 场景和 ViewController,但问题更笼统地表述为:</p>

<p>'我应该有一个类,它有逻辑以两种不同的方式行动,给定一些状态确定变量,还是两个不同的类?'</p>

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

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

<p>幸运的是,您可以两全其美。有三个类(class)。</p>

<ul>
<li><p>第一个类 A 将实现两种情况共有的所有逻辑。在您的情况下,这将具有除“我的个人资料” View 的“编辑”按钮之外的所有逻辑,并且可能类似于“其他个人资料” View 的“添加 friend ”按钮。</p></li>
<li><p>第二个类 B 和第三个类 C 将分别实现“编辑按钮”和“添加好友按钮”的逻辑,并且还利用第一个类实现通用逻辑。您可以将与第一个类的关系从 A 类继承,或委托(delegate)给 A 类的实例。在这种情况下,通常最好使用派生,您可以确保所有基类功能与两个子类同等相关,并且您不介意在公共(public)界面中公开派生。</p></li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 根据用户角色为 UIViewController 子类重用 Storyboard UI,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23378971/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23378971/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 根据用户角色为 UIViewController 子类重用 Storyboard UI