我正在创建一个实施 Facebook 和 Twitter 服务的应用。在我看来,我有一个按钮可以在 Facebook / Twitter 上切换共享。如果 Facebook / Twitter 未连接,则该按钮将显示“connect to”。
当我单击按钮时,我的控制器(而不是我的viewcontroller)中的方法将尝试切换值,因为此控制器会跟踪我的应用程序的状态。当我没有连接到社交网络时,我的控制器会注意到并将调用正确的服务。此服务将启动webview以提供用户凭据。
现在我的问题是:
当我在服务中时,我需要通过webview提供凭据。当我想要显示此webview时,我需要传递一个View Controller
来处理演示。我如何在这里提供一个viewcontroller?
我发现的方法:
我目前的实施方法是#3。
如果有些事情不清楚,请告诉我。
任何帮助表示赞赏! 提前谢谢!
答案 0 :(得分:2)
我希望这个问题能引起更多关注,我很想知道其他人会如何处理这种情况。
正如您已经说过的,有几种方法可以实现您的需求,但答案取决于对应用程序的了解。
我肯定会尽量保持业务逻辑和UI尽可能分开,我可以想到有两种方法可以做到这一点,但它们几乎是一回事。
使用回调函数使(非UI)控制器负责登录检查,然后您可以让控制器负责业务逻辑,并且调用ViewController负责通过该检查呈现任何UI。
正如您所建议的那样,使用协议,您的控制器可以拥有一个委托,它将是一个符合您协议的ViewController。然后使用只是获取您的共享实例,设置委托并调用所需的功能。
我可能倾向于选择2更像Swift,因为它是一种面向协议的语言。
如果控制器全局操作并且从应用程序内的任何位置访问,您可能最终会复制大量代码来进行这些检查,您可以通过创建UIViewController的扩展来解决这个问题,该扩展提供了与之交互的功能。控制器。
我希望这会有所帮助,看到其他人接近这一点的方式肯定会很有趣。