【问题标题】:Get Response From iOS SDK ViewController从 iOS SDK ViewController 获取响应
【发布时间】:2016-09-13 09:55:04
【问题描述】:

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

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

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

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

  4. 如果用户按下关闭按钮,我需要向客户端应用程序发送关闭按钮被按下的响应。如果用户按下“下一个屏幕”按钮,那么屏幕 B 现在将出现在屏幕 B 上,我们有 3 个按钮,用于返回、关闭屏幕并转到下一个屏幕。如果用户在屏幕 B 上按下关闭按钮,那么我想关闭呈现的控制器并再次提示客户端应用程序 SDK 控制器窗口已关闭。第三个屏幕的情况也是如此。

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

谢谢

【问题讨论】:

  • 所以最后你希望如果屏幕从应用程序必须向另一个应用程序发送消息的任何地方关闭?
  • 是的,我也不想在每个控制器中编写委托
  • 那么在屏幕关闭后你还能做什么..?

标签: ios objective-c sdk delegates


【解决方案1】:

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

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

【讨论】:

  • 谢谢,您能否为一位过渡代表解释一下您的回答。我没有使用故事板。谢谢
【解决方案2】:

经过深思熟虑。我提出了以下想法,当我实施它时,它就像一个魅力。如果有人也遇到这种情况,请分享。

  1. 在您的 SDK 中创建一个单独的协议类文件(仅限 .h 文件)。将其命名为您想要命名您的代表的任何名称。 (同时在您的 SDK 中公开该类)
  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"] 时,它只会指向代理设置为 self 的 mainController .

这是您可以实现的方法,您无需在不同的控制器中创建不同的委托/协议。您可以只向委托方法传递一个额外的参数,该参数可以表示该委托从哪个控制器返回。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2019-01-31
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    相关资源
    最近更新 更多