从 iOS SDK ViewController 获取响应

Get Response From iOS SDK ViewController

在 iOS 中创建 SDK 很新。任何人都可以在以下情况下帮助我。

  1. 我有一个 SDK,它有 3 个视图控制器,在单独的 NavigationController 中一个接一个打开。屏幕 A、屏幕 B 和屏幕 C.

  2. 来自我正在合并我的 SDK 的客户端应用程序。我会有一个按钮,它会显示包含在 UInavigationController 中的我的 SDK 控制器。 (我将初始化 Screen A Controller,然后将其作为 rootviewcontroller 包含在 uinavigationcontroller 中)

  3. 由于导航控制器中的第一个控制器将是屏幕 A,因此它将有两个按钮。一个用于关闭 window,另一个用于转到下一个屏幕(屏幕 B)。

  4. 如果用户按下关闭按钮,我需要将响应发送到已按下关闭按钮的客户端应用程序。如果用户按下 NEXT Screen 按钮,那么屏幕 B 现在将出现在屏幕 B 上,我们有 3 个按钮,用于返回、关闭屏幕和转到下一个屏幕。如果用户按下屏幕 B 上的关闭按钮,那么我想关闭呈现的控制器并再次通知客户端应用程序 SDK 控制器 window 已关闭。第三个屏幕也是如此。

我有一个选项可以在每个控制器等中嵌入委托,但我需要一些更专业和好的想法来为我的 SDK 实现这个东西。请指导我的想法和最好的方法。我的语言是 OBJECTIVE-C.

谢谢

如果每个控制器中的委托对你来说不够好,你可以只使用一个转换委托并检查传入和传出视图控制器。

或者,如果您使用故事板,则根本不需要委托,只需在您的 segue 函数中执行与客户端应用程序相关的调用即可。

想了很多。我想出了以下想法,当我实施它时,它就像一个魅力。如果有人也遇到这种情况,请分享。

  1. 在您的 SDK 中创建一个单独的协议 Class 文件(仅限 .h 文件)。将其命名为您想要命名的代表。 (同时在您的 SDK 中制作 class public)
  2. 在该头文件中声明必需或可选的方法。
  3. 在每个控制器中创建 id delagete 实例。例如,在控制器 A、B 和 C 中都会有该实例。
  4. 当用户尝试将 SDK 集成到他的应用程序中并尝试从他的客户端应用程序加载控制器 A 时,还要求用户将其委托设置为 self 并在他的客户端应用程序视图控制器中实现所需的方法。
  5. 在 SDK 中,当您从控制器 A 移动到 B,从 B 移动到 C 并继续将 self.delegate 传递给下一个控制器时。 (这不会创建单独的实例,而只是将一个委托指向所有其他控制器 - 因此不会出现内存或性能问题)
  6. 现在,当您尝试从任何具有不同值的控制器 A、B 或 C 等调用 [self.delegate yourMethodName:@"abc"] 时,它只会指向 mainController,其中代表被设置为自己。

这就是实现它的方法,您不需要在不同的控制器中创建不同的 delegates/protocols。您可以将一个额外的参数传递给委托方法,该方法可以表示该委托来自哪个控制器 return.

谢谢