繁体   English   中英

设计一个iOS SDK来显示UIViewController

[英]Design an iOS SDK to display a UIViewController

我目前正在开发一个iOS SDK,该SDK应该为不同的任务提供一些UIViewControllers,而我正在努力寻找一个不错的设计。

我认为有3种可能的设计:

  1. 让SDK用户实例化一个配置SDK UIViewController的实例并让他/她展示它
  2. 提供一个显示UIViewController的类方法,该方法负责呈现和关闭
  3. 实施构建器模式以配置所需UIViewController的实例,然后让用户展示ViewController或在构建器上调用表演

这些解决方案中的每一个都有一些缺点。 在解决方案1中,我不知道是否将使用导航控制器来显示控制器(或导航栏是否可用),并且我需要实现一些自定义内容以添加按钮等,这些通常可以在导航栏中找到。

解决方案2的可配置性不是很高,需要用户传递父UIViewController才能显示UIViewController。

如果有人可以指向我指向某个链接或就此问题提供一些建议,那将是很好的。 谢谢!

我猜想在身份验证期间使用GameKit就是一个很好的例子。 如果回调块中的身份验证失败,您将有机会显示和视图控制器实例来注册或登录游戏中心。 这是一个示例:

- (void) authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
         if (viewController != nil)
         {
             [self showAuthenticationDialogWhenReasonable: viewController
         }
         else if (localPlayer.isAuthenticated)
         {
             [self authenticatedPlayer: localPlayer];
         }
         else
         {
             [self disableGameCenter];
         }
     }];
}

如您所见,视图控制器是由游戏中心框架创建的,但是显示的决定以及如何(推,模态等)决定给开发人员。 我想那是最好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM