如何制作 UIViewController 库类?

Posted

技术标签:

【中文标题】如何制作 UIViewController 库类?【英文标题】:How do I make a UIViewController Library Class? 【发布时间】:2013-06-25 16:56:23 【问题描述】:

我有许多已发布的 ios 应用程序,我正在尝试向其中大多数应用程序添加一些额外的功能,这些功能是相同的,所以我想使用相同的代码。

这些应用程序都会产生一些用户可能希望通过电子邮件发送、保存或导出为 .txt 文件的结果。

我想创建一个类,每个应用程序中的多个 ViewController 都可以访问它(不是同时),方法是向它发送一条消息。然后新类创建一个提供选项的操作表,然后处理选择的任何选项。

我可以通过在每个应用程序的每个 ViewController 中添加代码来完成所有这些工作,但我正在努力以正确的方式做事,即重用代码!

因为我的处理程序类必须处理 UIActionSheet、MFMailComposeViewController、UIAlertView 等,我认为我认为它必须是 UIViewController 的子类是正确的。这是正确的吗?

我需要让它成为委托人吗?

我正在尝试以正确的方式做事,而不是按正确的方式做事,因此我们将不胜感激。

【问题讨论】:

看起来你想要的是 UIViewController 上的 category。 太棒了!这正是我一直在寻找的。如果您将其添加为答案,我会接受。 【参考方案1】:

您正在寻找向现有类添加功能的解决方案是Objective-C categories

【讨论】:

我确实有另一个快速的问题,自您上次发布以来我一直在尝试解决。如何将 clickedButtonAtIndex 方法中的数据传回 UIViewController? 在您的类别中,在创建和呈现警报视图、操作表等的方法的实现中,将委托分配给self。然后,在调用您的类别方法的视图控制器中,覆盖适当的委托回调并根据该控制器希望如何处理给定操作执行适当的工作。如果您在分配委托时看到警告,您想像这样 (id)self. 进行自我转换

以上是关于如何制作 UIViewController 库类?的主要内容,如果未能解决你的问题,请参考以下文章

如何在存储库类中使用 IAsyncEnumerable

如何以编程方式从 UINavigationController (storyboard) 切换到 UIViewController

如何使用 kotlinx.serialization 将库类序列化为 Protobuf?

Sonata 管理包,如何使用实体存储库类

如何扩展库类的功能?

如何将库类或对象传递给片段?