0

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

在我看来,有3种可能的设计:

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

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

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

如果有人可以指出我的链接或就此事提供一些建议,那就太好了。谢谢!

4

1 回答 1

0

我猜认证期间的 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];
         }
     }];
}

如您所见,视图控制器是由游戏中心框架创建的,但显示方式和方式(推送、模式等)的决定权交给了开发人员。我想这是最好的解决方案。

于 2013-07-25T11:02:13.247 回答